ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvY29udGV4dC52aW0gYi9ydW50aW1lL2F1dG9sb2FkL2NvbnRleHQudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NGQ3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2F1dG9sb2FkL2NvbnRleHQudmltCkBAIC0wLDAgKzEsMTg0IEBACisiIExhbmd1YWdlOiAgICAgICAgICAgQ29uVGVYdCB0eXBlc2V0dGluZyBlbmdpbmUKKyIgTWFpbnRhaW5lcjogICAgICAgICBOaWNvbGEgVml0YWNvbG9ubmEgPG52aXRhY29sb25uYUBnbWFpbC5jb20+CisiIExhdGVzdCBSZXZpc2lvbjogICAgMjAxNiBPY3QgMjEKKworbGV0IHM6a2VlcGNwbz0gJmNwbworc2V0IGNwbyZ2aW0KKworIiBIZWxwZXIgZnVuY3Rpb25zIHt7eworZnVuY3Rpb24hIHM6Y29udGV4dF9lY2hvKG1lc3NhZ2UsIG1vZGUpCisgIHJlZHJhdworICBlY2hvICJcciIKKyAgZXhlY3V0ZSAnZWNob2hsJyBhOm1vZGUKKyAgZWNob21zZyAnW0NvblRlWHRdJyBhOm1lc3NhZ2UKKyAgZWNob2hsIE5vbmUKK2VuZGYKKworZnVuY3Rpb24hIHM6c2goKQorICByZXR1cm4gaGFzKCd3aW4zMicpIHx8IGhhcygnd2luNjQnKSB8fCBoYXMoJ3dpbjE2JykgfHwgaGFzKCd3aW45NScpCisgICAgICAgIFwgPyBbJ2NtZC5leGUnLCAnL0MnXQorICAgICAgICBcIDogWycvYmluL3NoJywgJy1jJ10KK2VuZGZ1bmN0aW9uCisKKyIgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKK2lmIGV4aXN0cygnKndpbl9nZXRpZCcpCisKKyAgZnVuY3Rpb24hIHM6d2luX2dldGlkKCkKKyAgICByZXR1cm4gd2luX2dldGlkKCkKKyAgZW5kZgorCisgIGZ1bmN0aW9uISBzOndpbl9pZDJ3aW4od2luaWQpCisgICAgcmV0dXJuIHdpbl9pZDJ3aW4oYTp3aW5pZCkKKyAgZW5kZgorCitlbHNlCisKKyAgZnVuY3Rpb24hIHM6d2luX2dldGlkKCkKKyAgICByZXR1cm4gd2lubnIoKQorICBlbmRmCisKKyAgZnVuY3Rpb24hIHM6d2luX2lkMndpbih3aW5ucikKKyAgICByZXR1cm4gYTp3aW5ucgorICBlbmRmCisKK2VuZGlmCisiIH19fQorCisiIENvblRlWHQgam9icyB7e3sKK2lmIGhhcygnam9iJykKKworICBsZXQgZzpjb250ZXh0X2pvYnMgPSBbXQorCisgICIgUHJpbnQgdGhlIHN0YXR1cyBvZiBDb25UZVh0IGpvYnMKKyAgZnVuY3Rpb24hIGNvbnRleHQjam9iX3N0YXR1cygpCisgICAgbGV0IGw6am9icyA9IGZpbHRlcihnOmNvbnRleHRfam9icywgJ2pvYl9zdGF0dXModjp2YWwpID09ICJydW4iJykKKyAgICBsZXQgbDpuID0gbGVuKGw6am9icykKKyAgICBjYWxsIHM6Y29udGV4dF9lY2hvKAorICAgICAgICAgIFwgJ1RoZXJlICcuKGw6biA9PSAxID8gJ2lzJyA6ICdhcmUnKS4nICcuKGw6biA9PSAwID8gJ25vJyA6IGw6bikKKyAgICAgICAgICBcIC4nIGpvYicuKGw6biA9PSAxID8gJycgOiAncycpLicgcnVubmluZycKKyAgICAgICAgICBcIC4obDpuID09IDAgPyAnLicgOiAnICgnIC4gam9pbihsOmpvYnMsICcsICcpLicpLicpLAorICAgICAgICAgIFwgJ01vZGVNc2cnKQorICBlbmRmdW5jdGlvbgorCisgICIgU3RvcCBhbGwgQ29uVGVYdCBqb2JzCisgIGZ1bmN0aW9uISBjb250ZXh0I3N0b3Bfam9icygpCisgICAgbGV0IGw6am9icyA9IGZpbHRlcihnOmNvbnRleHRfam9icywgJ2pvYl9zdGF0dXModjp2YWwpID09ICJydW4iJykKKyAgICBmb3Igam9iIGluIGw6am9icworICAgICAgY2FsbCBqb2Jfc3RvcChqb2IpCisgICAgZW5kZm9yCisgICAgc2xlZXAgMQorICAgIGxldCBsOnRtcCA9IFtdCisgICAgZm9yIGpvYiBpbiBsOmpvYnMKKyAgICAgIGlmIGpvYl9zdGF0dXMoam9iKSA9PSAicnVuIgorICAgICAgICBjYWxsIGFkZChsOnRtcCwgam9iKQorICAgICAgZW5kaWYKKyAgICBlbmRmb3IKKyAgICBsZXQgZzpjb250ZXh0X2pvYnMgPSBsOnRtcAorICAgIGlmIGVtcHR5KGc6Y29udGV4dF9qb2JzKQorICAgICAgY2FsbCBzOmNvbnRleHRfZWNobygnRG9uZS4gTm8gam9icyBydW5uaW5nLicsICdNb2RlTXNnJykKKyAgICBlbHNlCisgICAgICBjYWxsIHM6Y29udGV4dF9lY2hvKCdUaGVyZSBhcmUgc3RpbGwgc29tZSBqb2JzIHJ1bm5pbmcuIFBsZWFzZSB0cnkgYWdhaW4uJywgJ1dhcm5pbmdNc2cnKQorICAgIGVuZGlmCisgIGVuZGZ1bmN0aW9uCisKKyAgZnVuY3Rpb24hIGNvbnRleHQjY2FsbGJhY2socGF0aCwgam9iLCBzdGF0dXMpCisgICAgaWYgaW5kZXgoZzpjb250ZXh0X2pvYnMsIGE6am9iKSAhPSAtMSAmJiBqb2Jfc3RhdHVzKGE6am9iKSAhPSAncnVuJyAiIGp1c3QgaW4gY2FzZQorICAgICAgY2FsbCByZW1vdmUoZzpjb250ZXh0X2pvYnMsIGluZGV4KGc6Y29udGV4dF9qb2JzLCBhOmpvYikpCisgICAgZW5kaWYKKyAgICBjYWxsIHM6Y2FsbGJhY2soYTpwYXRoLCBhOmpvYiwgYTpzdGF0dXMpCisgIGVuZGZ1bmN0aW9uCisKKyAgZnVuY3Rpb24hIGNvbnRleHQjY2xvc2VfY2IoY2hhbm5lbCkKKyAgICBjYWxsIGpvYl9zdGF0dXMoY2hfZ2V0am9iKGE6Y2hhbm5lbCkpICIgVHJpZ2dlciBleGl0X2NiJ3MgY2FsbGJhY2sgZm9yIGZhc3RlciBmZWVkYmFjaworICBlbmRmdW5jdGlvbgorCisgIGZ1bmN0aW9uISBzOnR5cGVzZXQocGF0aCkKKyAgICBjYWxsIGFkZChnOmNvbnRleHRfam9icywKKyAgICAgICAgICBcIGpvYl9zdGFydChhZGQoczpzaCgpLCBjb250ZXh0I2NvbW1hbmQoKSAuICcgJyAuIHNoZWxsZXNjYXBlKGZuYW1lbW9kaWZ5KGE6cGF0aCwgIjp0IikpKSwgeworICAgICAgICAgIFwgICAnY2xvc2VfY2InIDogJ2NvbnRleHQjY2xvc2VfY2InLAorICAgICAgICAgIFwgICAnZXhpdF9jYicgIDogZnVuY3Rpb24oZ2V0KGI6LCAnY29udGV4dF9jYWxsYmFjaycsIGdldChnOiwgJ2NvbnRleHRfY2FsbGJhY2snLCAnY29udGV4dCNjYWxsYmFjaycpKSwKKyAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgIFthOnBhdGhdKSwKKyAgICAgICAgICBcICAgJ2luX2lvJyAgICA6ICdudWxsJworICAgICAgICAgIFwgfSkpCisgIGVuZGZ1bmN0aW9uCisKK2Vsc2UgIiBObyBqb2JzCisKKyAgZnVuY3Rpb24hIGNvbnRleHQjam9iX3N0YXR1cygpCisgICAgY2FsbCBzOmNvbnRleHRfZWNobygnTm90IGltcGxlbWVudGVkJywgJ1dhcm5pbmdNc2cnKQorICBlbmRmdW5jdGlvbiEKKworICBmdW5jdGlvbiEgY29udGV4dCNzdG9wX2pvYnMoKQorICAgIGNhbGwgczpjb250ZXh0X2VjaG8oJ05vdCBpbXBsZW1lbnRlZCcsICdXYXJuaW5nTXNnJykKKyAgZW5kZnVuY3Rpb24KKworICBmdW5jdGlvbiEgY29udGV4dCNjYWxsYmFjayhwYXRoLCBqb2IsIHN0YXR1cykKKyAgICBjYWxsIHM6Y2FsbGJhY2soYTpwYXRoLCBhOmpvYiwgYTpzdGF0dXMpCisgIGVuZGZ1bmN0aW9uCisKKyAgZnVuY3Rpb24hIHM6dHlwZXNldChwYXRoKQorICAgIGV4ZWN1dGUgJyEnIC4gY29udGV4dCNjb21tYW5kKCkgLiAnICcgLiBzaGVsbGVzY2FwZShmbmFtZW1vZGlmeShhOnBhdGgsICI6dCIpKQorICAgIGNhbGwgY2FsbChnZXQoYjosICdjb250ZXh0X2NhbGxiYWNrJywgZ2V0KGc6LCAnY29udGV4dF9jYWxsYmFjaycsICdjb250ZXh0I2NhbGxiYWNrJykpLAorICAgICAgICAgIFwgW2E6cGF0aCwgMCwgdjpzaGVsbF9lcnJvcl0pCisgIGVuZGZ1bmN0aW9uCisKK2VuZGlmICIgaGFzKCdqb2InKQorCitmdW5jdGlvbiEgczpjYWxsYmFjayhwYXRoLCBqb2IsIHN0YXR1cykgYWJvcnQKKyAgaWYgYTpzdGF0dXMgPCAwICIgQXNzdW1lIHRoZSBqb2Igd2FzIHRlcm1pbmF0ZWQKKyAgICByZXR1cm4KKyAgZW5kaWYKKyAgIiBHZXQgaW5mbyBhYm91dCB0aGUgY3VycmVudCB3aW5kb3cKKyAgbGV0IGw6d2luaWQgPSBzOndpbl9nZXRpZCgpICAgICAgICAgICAgICIgU2F2ZSB3aW5kb3cgaWQKKyAgbGV0IGw6ZWZtID0gJmw6ZXJyb3Jmb3JtYXQgICAgICAgICAgICAgICIgU2F2ZSBsb2NhbCBlcnJvcmZvcm1hdAorICBsZXQgbDpjd2QgPSBmbmFtZW1vZGlmeShnZXRjd2QoKSwgIjpwIikgIiBTYXZlIGxvY2FsIHdvcmtpbmcgZGlyZWN0b3J5CisgICIgU2V0IGVycm9yZm9ybWF0IHRvIHBhcnNlIENvblRlWHQgZXJyb3JzCisgIGV4ZWN1dGUgJ3NldGwgZWZtPScgLiBlc2NhcGUoYjpjb250ZXh0X2Vycm9yZm9ybWF0LCAnICcpCisgIHRyeSAiIFNldCBjd2QgdG8gZXhwYW5kIGVycm9yIGZpbGUgY29ycmVjdGx5CisgICAgZXhlY3V0ZSAnbGNkJyBmbmFtZWVzY2FwZShmbmFtZW1vZGlmeShhOnBhdGgsICc6aCcpKQorICBjYXRjaCAvLiovCisgICAgZXhlY3V0ZSAnc2V0bCBlZm09JyAuIGVzY2FwZShsOmVmbSwgJyAnKQorICAgIHRocm93IHY6ZXhjZXB0aW9uCisgIGVuZHRyeQorICB0cnkKKyAgICBleGVjdXRlICdjZ2V0ZmlsZScgZm5hbWVlc2NhcGUoZm5hbWVtb2RpZnkoYTpwYXRoLCAnOnInKSAuICcubG9nJykKKyAgICBib3RyaWdodCBjd2luZG93CisgIGZpbmFsbHkgIiBSZXN0b3JlIGN3ZCBhbmQgZXJyb3Jmb3JtYXQKKyAgICBleGVjdXRlIHM6d2luX2lkMndpbihsOndpbmlkKSAuICd3aW5jbWQgdycKKyAgICBleGVjdXRlICdsY2QgJyAuIGZuYW1lZXNjYXBlKGw6Y3dkKQorICAgIGV4ZWN1dGUgJ3NldGwgZWZtPScgLiBlc2NhcGUobDplZm0sICcgJykKKyAgZW5kdHJ5CisgIGlmIGE6c3RhdHVzID09IDAKKyAgICBjYWxsIHM6Y29udGV4dF9lY2hvKCdTdWNjZXNzIScsICdNb2RlTXNnJykKKyAgZWxzZQorICAgIGNhbGwgczpjb250ZXh0X2VjaG8oJ1RoZXJlIGFyZSBlcnJvcnMuICcsICdFcnJvck1zZycpCisgIGVuZGlmCitlbmRmdW5jdGlvbgorCitmdW5jdGlvbiEgY29udGV4dCNjb21tYW5kKCkKKyAgcmV0dXJuIGdldChiOiwgJ2NvbnRleHRfbXR4cnVuJywgZ2V0KGc6LCAnY29udGV4dF9tdHhydW4nLCAnbXR4cnVuJykpCisgICAgICAgIFwgLiAnIC0tc2NyaXB0IGNvbnRleHQgLS1hdXRvZ2VuZXJhdGUgLS1ub25zdG9wbW9kZScKKyAgICAgICAgXCAuICcgLS1zeW5jdGV4PScgLiAoZ2V0KGI6LCAnY29udGV4dF9zeW5jdGV4JywgZ2V0KGc6LCAnY29udGV4dF9zeW5jdGV4JywgMCkpID8gJzEnIDogJzAnKQorICAgICAgICBcIC4gJyAnIC4gZ2V0KGI6LCAnY29udGV4dF9leHRyYV9vcHRpb25zJywgZ2V0KGc6LCAnY29udGV4dF9leHRyYV9vcHRpb25zJywgJycpKQorZW5kZnVuY3Rpb24KKworIiBBY2NlcHRzIGFuIG9wdGlvbmFsIHBhdGggKHVzZWZ1bCBmb3IgYmlnIHByb2plY3RzLCB3aGVuIHRoZSBmaWxlIHlvdSBhcmUKKyIgZWRpdGluZyBpcyBub3QgdGhlIHByb2plY3QncyByb290IGRvY3VtZW50KS4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHVzZXMKKyIgdGhlIHBhdGggb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgorZnVuY3Rpb24hIGNvbnRleHQjdHlwZXNldCguLi4pIGFib3J0CisgIGxldCBsOnBhdGggPSBmbmFtZW1vZGlmeShzdHJsZW4oYTowMDBbMF0pID4gMCA/IGE6MSA6IGV4cGFuZCgiJSIpLCAiOnAiKQorICBsZXQgbDpjd2QgPSBmbmFtZW1vZGlmeShnZXRjd2QoKSwgIjpwIikgIiBTYXZlIGxvY2FsIHdvcmtpbmcgZGlyZWN0b3J5CisgIGNhbGwgczpjb250ZXh0X2VjaG8oJ1R5cGVzZXR0aW5nLi4uJywgICdNb2RlTXNnJykKKyAgZXhlY3V0ZSAnbGNkJyBmbmFtZWVzY2FwZShmbmFtZW1vZGlmeShsOnBhdGgsICI6aCIpKQorICB0cnkKKyAgICBjYWxsIHM6dHlwZXNldChsOnBhdGgpCisgIGZpbmFsbHkgIiBSZXN0b3JlIGxvY2FsIHdvcmtpbmcgZGlyZWN0b3J5CisgICAgZXhlY3V0ZSAnbGNkICcgLiBmbmFtZWVzY2FwZShsOmN3ZCkKKyAgZW5kdHJ5CitlbmRmdW5jdGlvbiEKKyJ9fX0KKworbGV0ICZjcG8gPSBzOmtlZXBjcG8KK3VubGV0IHM6a2VlcGNwbworCisiIHZpbTogc3c9MiBmZG09bWFya2VyCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL2NvbnRleHRjb21wbGV0ZS52aW0gYi9ydW50aW1lL2F1dG9sb2FkL2NvbnRleHRjb21wbGV0ZS52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI5M2JiMAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvY29udGV4dGNvbXBsZXRlLnZpbQpAQCAtMCwwICsxLDI1IEBACisiIExhbmd1YWdlOiAgICAgICAgICAgQ29uVGVYdCB0eXBlc2V0dGluZyBlbmdpbmUKKyIgTWFpbnRhaW5lcjogICAgICAgICBOaWNvbGEgVml0YWNvbG9ubmEgPG52aXRhY29sb25uYUBnbWFpbC5jb20+CisiIExhdGVzdCBSZXZpc2lvbjogICAgMjAxNiBPY3QgMTUKKworbGV0IHM6a2VlcGNwbz0gJmNwbworc2V0IGNwbyZ2aW0KKworIiBDb21wbGV0ZSBrZXl3b3JkcyBpbiBNZXRhUG9zdCBibG9ja3MKK2Z1bmN0aW9uISBjb250ZXh0Y29tcGxldGUjQ29tcGxldGUoZmluZHN0YXJ0LCBiYXNlKQorICBpZiBhOmZpbmRzdGFydCA9PSAxCisgICAgaWYgbGVuKHN5bnN0YWNrKGxpbmUoJy4nKSwgMSkpID4gMCAmJgorICAgICAgICAgIFwgc3luSURhdHRyKHN5bnN0YWNrKGxpbmUoJy4nKSwgMSlbMF0sICJuYW1lIikgPT0jICdjb250ZXh0TVBHcmFwaGljJworICAgICAgcmV0dXJuIHN5bnRheGNvbXBsZXRlI0NvbXBsZXRlKGE6ZmluZHN0YXJ0LCBhOmJhc2UpCisgICAgZWxzZQorICAgICAgcmV0dXJuIC0zCisgICAgZW5kaWYKKyAgZWxzZQorICAgIHJldHVybiBzeW50YXhjb21wbGV0ZSNDb21wbGV0ZShhOmZpbmRzdGFydCwgYTpiYXNlKQorICBlbmRpZgorZW5kZnVuY3Rpb24KKworbGV0ICZjcG8gPSBzOmtlZXBjcG8KK3VubGV0IHM6a2VlcGNwbworCisiIHZpbTogc3c9MiBmZG09bWFya2VyCmRpZmYgLS1naXQgYS9ydW50aW1lL2NvbXBpbGVyL2NvbnRleHQudmltIGIvcnVudGltZS9jb21waWxlci9jb250ZXh0LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjc4Yzk2Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9jb21waWxlci9jb250ZXh0LnZpbQpAQCAtMCwwICsxLDU0IEBACisiIFZpbSBjb21waWxlciBmaWxlCisiIENvbXBpbGVyOiAgICAgQ29uVGVYdCB0eXBlc2V0dGluZyBlbmdpbmUKKyIgTWFpbnRhaW5lcjogICBOaWNvbGEgVml0YWNvbG9ubmEgPG52aXRhY29sb25uYUBnbWFpbC5jb20+CisiIExhc3QgQ2hhbmdlOiAgMjAxNiBPY3QgMjEKKworaWYgZXhpc3RzKCJjdXJyZW50X2NvbXBpbGVyIikKKyAgZmluaXNoCitlbmRpZgorbGV0IHM6a2VlcGNwbz0gJmNwbworc2V0IGNwbyZ2aW0KKworaWYgZXhpc3RzKCI6Q29tcGlsZXJTZXQiKSAhPSAyICAgICIgb2xkZXIgVmltIGFsd2F5cyB1c2VkIDpzZXRsb2NhbAorICBjb21tYW5kIC1uYXJncz0qIENvbXBpbGVyU2V0IHNldGxvY2FsIDxhcmdzPgorZW5kaWYKKworIiBJZiBtYWtlZmlsZSBleGlzdHMgYW5kIHdlIGFyZSBub3QgYXNrZWQgdG8gaWdub3JlIGl0LCB3ZSB1c2Ugc3RhbmRhcmQgbWFrZQorIiAoZG8gbm90IHJlZGVmaW5lIG1ha2VwcmcpCitpZiBnZXQoYjosICdjb250ZXh0X2lnbm9yZV9tYWtlZmlsZScsIGdldChnOiwgJ2NvbnRleHRfaWdub3JlX21ha2VmaWxlJywgMCkpIHx8CisgICAgICBcICghZmlsZXJlYWRhYmxlKCdNYWtlZmlsZScpICYmICFmaWxlcmVhZGFibGUoJ21ha2VmaWxlJykpCisgIGxldCBjdXJyZW50X2NvbXBpbGVyID0gJ2NvbnRleHQnCisgICIgVGhlIGZvbGxvd2luZyBhc3N1bWVzIHRoYXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaXMgc2V0IHRvIHRoZQorICAiIGRpcmVjdG9yeSBvZiB0aGUgZmlsZSB0byBiZSB0eXBlc2V0CisgIGxldCAmbDptYWtlcHJnID0gZ2V0KGI6LCAnY29udGV4dF9tdHhydW4nLCBnZXQoZzosICdjb250ZXh0X210eHJ1bicsICdtdHhydW4nKSkKKyAgICAgICAgXCAuICcgLS1zY3JpcHQgY29udGV4dCAtLWF1dG9nZW5lcmF0ZSAtLW5vbnN0b3Btb2RlIC0tc3luY3RleD0nCisgICAgICAgIFwgLiAoZ2V0KGI6LCAnY29udGV4dF9zeW5jdGV4JywgZ2V0KGc6LCAnY29udGV4dF9zeW5jdGV4JywgMCkpID8gJzEnIDogJzAnKQorICAgICAgICBcIC4gJyAnIC4gZ2V0KGI6LCAnY29udGV4dF9leHRyYV9vcHRpb25zJywgZ2V0KGc6LCAnY29udGV4dF9leHRyYV9vcHRpb25zJywgJycpKQorICAgICAgICBcIC4gJyAnIC4gc2hlbGxlc2NhcGUoZXhwYW5kKCclOnA6dCcpKQorZWxzZQorICBsZXQgY3VycmVudF9jb21waWxlciA9ICdtYWtlJworZW5kaWYKKworbGV0IGI6Y29udGV4dF9lcnJvcmZvcm1hdCA9ICcnCisgICAgICBcIC4gJyUtUG9wZW4gc291cmNlJS4lIz4gJWYsJworICAgICAgXCAuICclLVFjbG9zZSBzb3VyY2UlLiUjPiAlZiwnCisgICAgICBcIC4gIiUtUG9wZW4gc291cmNlJS4lI25hbWUgJyVmJywiCisgICAgICBcIC4gIiUtUWNsb3NlIHNvdXJjZSUuJSNuYW1lICclZicsIgorICAgICAgXCAuICclRXRleCAldHJyb3IlLiUjbXAgZXJyb3Igb24gbGluZSAlbCBpbiBmaWxlICVmOiUuJSMsJworICAgICAgXCAuICd0ZXggJXRycm9yJS4lI2Vycm9yIG9uIGxpbmUgJWwgaW4gZmlsZSAlZjogJW0sJworICAgICAgXCAuICclRWx1YSAldHJyb3IlLiUjZXJyb3Igb24gbGluZSAlbCBpbiBmaWxlICVmOiwnCisgICAgICBcIC4gJyUrRW1ldGFwb3N0ICUjPiBlcnJvcjogJSMsJworICAgICAgXCAuICchIGVycm9yOiAlIyVtLCcKKyAgICAgIFwgLiAnJS1DICUjLCcKKyAgICAgIFwgLiAnJUMhICVtLCcKKyAgICAgIFwgLiAnJVpbY3R4bHVhXSVtLCcKKyAgICAgIFwgLiAnJStDPCo+ICUuJSMsJworICAgICAgXCAuICclLUMlLiUjLCcKKyAgICAgIFwgLiAnJVouLi4lbSwnCisgICAgICBcIC4gJyUtWm5vLWVycm9yLCcKKyAgICAgIFwgLiAnJS1HJS4lIycgIiBTa2lwIHJlbWFpbmluZyBsaW5lcworCitleGVjdXRlICdDb21waWxlclNldCBlcnJvcmZvcm1hdD0nIC4gZXNjYXBlKGI6Y29udGV4dF9lcnJvcmZvcm1hdCwgJyAnKQorCitsZXQgJmNwbyA9IHM6a2VlcGNwbwordW5sZXQgczprZWVwY3BvCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmFsLnR4dCBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CmluZGV4IDg4NTk5ZGQuLmFjZjg0ZDIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2V2YWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CkBAIC0xLDQgKzEsNCBAQAotKmV2YWwudHh0KglGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTYgT2N0IDAyCisqZXZhbC50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNiBPY3QgMTUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtODIxNCw3ICs4MjE0LDcgQEAKIAkJZW5kIGRvZXMgY2F1c2UgdGhlIGxhc3QgbGluZSBpbiB0aGUgZmlsZSB0byBlbmQgaW4gYSBOTC4KIAogCQlXaGVuIHtmbGFnc30gY29udGFpbnMgImEiIHRoZW4gYXBwZW5kIG1vZGUgaXMgdXNlZCwgbGluZXMgYXJlCi0JCWFwcGVuZCB0byB0aGUgZmlsZTogPgorCQlhcHBlbmRlZCB0byB0aGUgZmlsZTogPgogCQkJOmNhbGwgd3JpdGVmaWxlKFsiZm9vIl0sICJldmVudC5sb2ciLCAiYSIpCiAJCQk6Y2FsbCB3cml0ZWZpbGUoWyJiYXIiXSwgImV2ZW50LmxvZyIsICJhIikKID4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21hcC50eHQgYi9ydW50aW1lL2RvYy9tYXAudHh0CmluZGV4IDI1ZWQ4MjcuLmU2NDRmODMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21hcC50eHQKKysrIGIvcnVudGltZS9kb2MvbWFwLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptYXAudHh0KiAgICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTYgQXVnIDI2CisqbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IE9jdCAxNQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFicGFnZS50eHQgYi9ydW50aW1lL2RvYy90YWJwYWdlLnR4dAppbmRleCA4MTBmYmEwLi5iYzQwOTgxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWJwYWdlLnR4dAorKysgYi9ydW50aW1lL2RvYy90YWJwYWdlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0YWJwYWdlLnR4dCogICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTYgU2VwIDA5CisqdGFicGFnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IE9jdCAyMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNTgsNiArNTgsOCBAQAogSW4gdGhlIEdVSSB0YWIgcGFnZXMgbGluZSB5b3UgY2FuIHVzZSB0aGUgcmlnaHQgbW91c2UgYnV0dG9uIHRvIG9wZW4gbWVudS4KIHx0YWJsaW5lLW1lbnV8LgogCitGb3IgdGhlIHJlbGF0ZWQgYXV0b2NvbW1hbmRzIHNlZSB8dGFibmV3LWF1dG9jbWR8LgorCiA6W2NvdW50XXRhYmVbZGl0XQkJCQkqOnRhYmUqICo6dGFiZWRpdCogKjp0YWJuZXcqCiA6W2NvdW50XXRhYm5ldwogCQlPcGVuIGEgbmV3IHRhYiBwYWdlIHdpdGggYW4gZW1wdHkgd2luZG93LCBhZnRlciB0aGUgY3VycmVudApAQCAtMjg3LDYgKzI4OSw3IEBACiAKIEN1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZSBvcHRpb24gbG9jYWwgdG8gYSB0YWIgcGFnZTogJ2NtZGhlaWdodCcuCiAKKwkJCQkJCSp0YWJuZXctYXV0b2NtZCoKIFRoZSBUYWJMZWF2ZSBhbmQgVGFiRW50ZXIgYXV0b2NvbW1hbmQgZXZlbnRzIGNhbiBiZSB1c2VkIHRvIGRvIHNvbWV0aGluZyB3aGVuCiBzd2l0Y2hpbmcgZnJvbSBvbmUgdGFiIHBhZ2UgdG8gYW5vdGhlci4gIFRoZSBleGFjdCBvcmRlciBkZXBlbmRzIG9uIHdoYXQgeW91CiBhcmUgZG9pbmcuICBXaGVuIGNyZWF0aW5nIGEgbmV3IHRhYiBwYWdlIHRoaXMgd29ya3MgYXMgaWYgeW91IGNyZWF0ZSBhIG5ldwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggZmExNDY1ZS4uMTY2ZmY1OSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC04NTk5LDYgKzg1OTksNyBAQAogdGFiLXBhZ2UtaW50cm8JdGFicGFnZS50eHQJLyp0YWItcGFnZS1pbnRybyoKIHRhYi1wYWdlLW90aGVyCXRhYnBhZ2UudHh0CS8qdGFiLXBhZ2Utb3RoZXIqCiB0YWJsaW5lLW1lbnUJdGFicGFnZS50eHQJLyp0YWJsaW5lLW1lbnUqCit0YWJuZXctYXV0b2NtZAl0YWJwYWdlLnR4dAkvKnRhYm5ldy1hdXRvY21kKgogdGFicGFnZQl0YWJwYWdlLnR4dAkvKnRhYnBhZ2UqCiB0YWJwYWdlLXZhcmlhYmxlCWV2YWwudHh0CS8qdGFicGFnZS12YXJpYWJsZSoKIHRhYnBhZ2UudHh0CXRhYnBhZ2UudHh0CS8qdGFicGFnZS50eHQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IDczNmM1NDEuLjkzYTNhYmUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNiBPY3QgMTIKKyp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTYgT2N0IDIzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTM1LDcgKzM1LDEwIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogK2NoYW5uZWw6CistIENoZWNrIGZvciBqb2IgY2xlYW51cCBtb3JlIG9mdGVuPyAgUGF0Y2ggZnJvbSBPemFraSBLaWljaGksIDIwMTYgT2N0IDIyLgogLSBQcm9ibGVtIHdpdGggc3RkZXJyIG9uIFdpbmRvd3M/IChWaW5jZW50IFJpc2NobWFubiwgMjAxNiBBdWcgMzEsICMxMDI2KQorLSBPbiBXaW5kb3dzIGpvYl9zdG9wKCkgc3RvcHMgY21kLmV4ZSwgbm90IHRoZSBjb21tYW5kcyBpdCBydW5zLiAoIzExODQpCisgICAgUGF0Y2ggZnJvbSBZYXN1aGlybyBNYXRzdW1vdG8sIE9jdCAyMS4KIC0gQWRkICdjd2QnIGFyZ3VtZW50IHRvIHN0YXJ0X2pvYigpOiBkaXJlY3RvcnkgdG8gY2hhbmdlIHRvIGluIHRoZSBjaGlsZC4KICAgICBjaGVjayBmb3IgdmFsaWQgZGlyZWN0b3J5IGJlZm9yZSBmb3JraW5nLgogICBQYXJ0IG9mIHBhdGNoIGZvciBlbnZpcm9ubWVudCwgWWFzdWhpcm8gTWF0c3Vtb3RvLCAjMTE2MApAQCAtMTAzLDEwICsxMDYsMjYgQEAKIFNob3VsZCBqc29uX2VuY29kZSgpL2pzb25fZGVjb2RlKCkgcmVzdHJpY3QgcmVjdXJzaXZlbmVzcz8KIE9yIGF2b2lkIHJlY3Vyc2l2ZW5lc3MuCiAKK1BhdGNoIHRvIGZpeCBjb25jZWFsIG1vZGUuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTYgT2N0IDIzLCBjbG9zZSAjMTA5MikKKworUGF0Y2ggdG8gcmVzZXQgZXhfZXhpdHZhbHVlIGFmdGVyIGNhdGNoLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDE2IE9jdCAyMykKKworV3JvbmcgZGlmZiBoaWdobGlnaHRpbmcgd2l0aCB0aHJlZSBmaWxlcy4gKDIwMTYgT2N0IDIwLCAjMTE4NikKK0Fsc28gZ2V0IEU3NDkgb24gZXhpdC4KKworUGF0Y2ggZm9yIGJldHRlciBleHBsYW5hdGlvbiBvZiAnY29tcGF0aWJsZScgc2lkZSBlZmZlY3RzLgoraHR0cHM6Ly9naXRodWIuY29tL3ZpbS92aW0vcHVsbC8xMTYxL2ZpbGVzCisKIEVycm9yIGluIHRlc3Rfc3RhcnR1cF91dGY4IG9uIFNvbGFyaXMuIChEYW5layBEdXZhbGwsIDIwMTYgQXVnIDE3KQogCitTY3JlZW4gdXBkYXRlZCBkZWxheWVkIHdoZW4gdXNpbmcgQ1RSTC1PIHUgaW4gSW5zZXJ0IG1vZGUuCisoQmFybGlrLCAjMTE5MSkgIFBlcmhhcHMgYmVjYXVzZSBzdGF0dXMgbWVzc2FnZT8KKworUGF0Y2ggZm9yIHJlc3RvcmluZyB3aWRlIGNoYXJhY3RlcnMgaW4gdGhlIGNvbnNvbGUgYnVmZmVyLgorKEtlbiBUYWthdGEsIDIwMTYgSnVuIDcpCisKIFBhdGNoIHRvIGZpeCBlc2NhcGluZyBvZiBqb2IgYXJndW1lbnRzLiAoWWFzdWhpcm8gTWF0c3Vtb3RvLCAyMDE2IE9jdCA1KQotU3RpbGwgbm90IHJpZ2h0LgorVXBkYXRlIE9jdCAxNDogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbWF0dG4vZDQ3ZTdkM2JmZTVhZGU0YmU4NjA2MmI1NjVhNGJmY2EKIAogT25jZSAuZXhlIHdpdGggdXBkYXRlZCBpbnN0YWxsZXIgaXMgYXZhaWxhYmxlOiBBZGQgcmVtYXJrIHRvIGRvd25sb2FkIHBhZ2UKIGFib3V0IC9TIGFuZCAvRCBvcHRpb25zIChLZW4gVGFrYXRhLCAyMDE2IEFwciAxMykKQEAgLTE0OSw2ICsxNjgsOSBAQAogdXNlIHRoZSBjdXJyZW50IGJlaGF2aW9yLgogSW5jbHVkZSB0aGUgdGVzdC4KIAorV2hlbiAna2V5d29yZHByZycgc3RhcnRzIHdpdGggIjoiIHRoZSBhcmd1bWVudCBpcyBzdGlsbCBlc2NhcGVkIGFzIGEgc2hlbGwKK2NvbW1hbmQgYXJndW1lbnQuIChSb21haW4gTGFmb3VyY2FkZSwgMjAxNiBPY3QgMTYsICMxMTc1KQorCiBJZGVhIGZyb20gU3ZlbjogcmVjb3JkIHNlcXVlbmNlIG9mIGtleXMuICBVc2VmdWwgdG8gc2hvdyBvdGhlcnMgd2hhdCB0aGV5IGFyZQogZG9pbmcgKGxvb2sgb3ZlciB0aGUgc2hvdWxkZXIpLCBhbmQgYWxzbyB0byBzZWUgd2hhdCBoYXBwZW5lZC4KIFByb2JhYmx5IGxpc3Qgb2Yga2V5c3Ryb2tlcywgd2l0aCBzb21lIGFubm90YXRpb25zIGZvciBtb2RlIGNoYW5nZXMuCkBAIC0xNzksNiArMjAxLDkgQEAKIAogQ2Fubm90IGRlbGV0ZSBhIGZpbGUgd2l0aCBzcXVhcmUgYnJhY2tldHMgd2l0aCBkZWxldGUoKS4gKCM2OTYpCiAKK1BhdGNoIHRvIGFkZCAiOnN5biBmb2xkbGV2ZWwiIHRvIHVzZSBmb2xkIGxldmVsIGZ1cnRoZXIgZG93biB0aGUgbGluZS4KKyhCcmFkIEtpbmcsIDIwMTYgT2N0IDE5KQorCiBDb21wbGV0aW9uIGZvciBpbnB1dCgpIGRvZXMgbm90IGV4cGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIChjaGRpemEsIDIwMTYKIEp1bCAyNSwgIzk0OCkKIApAQCAtMjE4LDkgKzI0Myw2IEBACiAKIFBhdGNoIGZvciBzeW50YXggZm9sZGluZyBvcHRpbWl6YXRpb24uIChTaG91Z28sIDIwMTYgU2VwIDYsICMxMDQ1KQogCi1QYXRjaCBmb3IgcmVzdG9yaW5nIHdpZGUgY2hhcmFjdGVycyBpbiB0aGUgY29uc29sZSBidWZmZXIuCi0oS2VuIFRha2F0YSwgMjAxNiBKdW4gNykKLQogUGF0Y2ggZm9yIGRyYWcmZHJvcCByZW9yZGVyaW5nIG9mIEdVSSB0YWIgcGFnZXMgcmVvcmRlcmluZy4KIChLZW4gVGFrYXRhLCAyMDEzIE5vdiAyMiwgc2Vjb25kIG9uZSwgYWxzbyBieSBNYXNhbWljaGkgQWJlKQogTm93IG9uIEdpdDogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbm9jZDUvMTY1Mjg2NDk1Yzc4MmI4MTViOTQKQEAgLTMzMSw2ICszNTMsOSBAQAogVGhhdSwgMjAxMyBOb3YgMjAsIDIwMTQgSmFuIDI5LCAyMDE0IEphbiAzMSkKIEFkZGVkIHRlc3RzIChKYW1lcyBNY0NveSwgMjAxNiBBdWcgMykuICBTdGlsbCBuZWVkcyBtb3JlIHdvcmsuCiAKK0ZlYXR1cmUgcmVxdWVzdDogYWRkIHRoZSAiYWwiIHRleHQgb2JqZWN0LCB0byBtYW5pcHVsYXRlIGEgc2NyZWVuIGxpbmUuCitFc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHVzaW5nICdsaW5lYnJlYWsnCisKIEFjY2VzcyB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBtYXRjaF9iYWNrcmVmKCkgcmVnZXhwX25kYS5jOjQ4ODIKIChEb21pbmlxdWUgUGVsbGUsIDIwMTUgTm92IDYpCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0IGIvcnVudGltZS9kb2Mvd2luZG93cy50eHQKaW5kZXggMGVmMWE4Yi4uM2M2OTVlNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvd2luZG93cy50eHQKKysrIGIvcnVudGltZS9kb2Mvd2luZG93cy50eHQKQEAgLTEsNCArMSw0IEBACi0qd2luZG93cy50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IEF1ZyAyMworKndpbmRvd3MudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNiBPY3QgMjEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTI5NSw4ICsyOTUsOCBAQAogCQkgICAgOjFxdWl0ICAiIHF1aXQgdGhlIGZpcnN0IHdpbmRvdwogCQkgICAgOiRxdWl0ICAiIHF1aXQgdGhlIGxhc3Qgd2luZG93CiAJCSAgICA6OXF1aXQgICIgcXVpdCB0aGUgbGFzdCB3aW5kb3cKLQkJCSAgICAgIiBpZiB0aGVyZSBhcmUgbGVzcyB0aGFuIDkgd2luZG93cyBvcGVuZWQKLQkJICAgIDotcXVpdCAgIiBxdWl0IHRoZSBwcmV2aWV3cyB3aW5kb3cKKwkJCSAgICAiIGlmIHRoZXJlIGFyZSBmZXdlciB0aGFuIDkgd2luZG93cyBvcGVuZWQKKwkJICAgIDotcXVpdCAgIiBxdWl0IHRoZSBwcmV2aW91cyB3aW5kb3cKIAkJICAgIDorcXVpdCAgIiBxdWl0IHRoZSBuZXh0IHdpbmRvdwogCQkgICAgOisycXVpdCAiIHF1aXQgdGhlIHNlY29uZCBuZXh0IHdpbmRvdwogPApkaWZmIC0tZ2l0IGEvcnVudGltZS9maWxldHlwZS52aW0gYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQppbmRleCA4NDQ2MzVlLi40ODJlYzE3IDEwMDY0NAotLS0gYS9ydW50aW1lL2ZpbGV0eXBlLnZpbQorKysgYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBkZXRlY3QgZmlsZSB0eXBlcwogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAxNiBTZXAgMjIKKyIgTGFzdCBDaGFuZ2U6CTIwMTYgT2N0IDE1CiAKICIgTGlzdGVuIHZlcnkgY2FyZWZ1bGx5LCBJIHdpbGwgc2F5IHRoaXMgb25seSBvbmNlCiBpZiBleGlzdHMoImRpZF9sb2FkX2ZpbGV0eXBlcyIpCkBAIC0yMjU0LDcgKzIyNTQsNyBAQAogZW5kZnVuYwogCiAiIENvblRlWHQKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB0ZXgvY29udGV4dC8qLyoudGV4LCoubWtpaSwqLm1raXYgICBzZXRmIGNvbnRleHQKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB0ZXgvY29udGV4dC8qLyoudGV4LCoubWtpaSwqLm1raXYsKi5ta3ZpICAgc2V0ZiBjb250ZXh0CiAKICIgVGV4aW5mbwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudGV4aW5mbywqLnRleGksKi50eGkJc2V0ZiB0ZXhpbmZvCmRpZmYgLS1naXQgYS9ydW50aW1lL2Z0cGx1Z2luL2NvbnRleHQudmltIGIvcnVudGltZS9mdHBsdWdpbi9jb250ZXh0LnZpbQppbmRleCAxYzdkNjc4Li42YzExMTY2IDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL2NvbnRleHQudmltCisrKyBiL3J1bnRpbWUvZnRwbHVnaW4vY29udGV4dC52aW0KQEAgLTEsNyArMSw4IEBACiAiIFZpbSBmaWxldHlwZSBwbHVnaW4gZmlsZQotIiBMYW5ndWFnZTogICAgICAgICBDb25UZVh0IHR5cGVzZXR0aW5nIGVuZ2luZQotIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KLSIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwOC0wNy0wOQorIiBMYW5ndWFnZTogICAgICAgICAgIENvblRlWHQgdHlwZXNldHRpbmcgZW5naW5lCisiIE1haW50YWluZXI6ICAgICAgICAgTmljb2xhIFZpdGFjb2xvbm5hIDxudml0YWNvbG9ubmFAZ21haWwuY29tPgorIiBGb3JtZXIgTWFpbnRhaW5lcnM6IE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgorIiBMYXRlc3QgUmV2aXNpb246ICAgIDIwMTYgT2N0IDE0CiAKIGlmIGV4aXN0cygiYjpkaWRfZnRwbHVnaW4iKQogICBmaW5pc2gKQEAgLTExLDE2ICsxMiwyNiBAQAogbGV0IHM6Y3BvX3NhdmUgPSAmY3BvCiBzZXQgY3BvJnZpbQogCi1sZXQgYjp1bmRvX2Z0cGx1Z2luID0gInNldGwgY29tPCBjbXM8IGRlZjwgaW5jPCBzdWE8IGZvPCIKK2lmICFleGlzdHMoJ2N1cnJlbnRfY29tcGlsZXInKQorICBjb21waWxlciBjb250ZXh0CitlbmRpZgogCi1zZXRsb2NhbCBjb21tZW50cz1iOiVELGI6JUMsYjolTSw6JSBjb21tZW50c3RyaW5nPSVcICVzIGZvcm1hdG9wdGlvbnMrPXRjcm9xbAorbGV0IGI6dW5kb19mdHBsdWdpbiA9ICJzZXRsIGNvbTwgY21zPCBkZWY8IGluYzwgc3VhPCBmbzwgb2Z1PCIKKyAgICAgIFwgLiAifCB1bmxldCEgYjptYXRjaF9pZ25vcmVjYXNlIGI6bWF0Y2hfd29yZHMgYjptYXRjaF9za2lwIgorCitzZXRsb2NhbCBjb21tZW50cz1iOiVELGI6JUMsYjolTSw6JSBjb21tZW50c3RyaW5nPSVcICVzIGZvcm1hdG9wdGlvbnMrPXRqY3JvcWwyCitpZiBnZXQoYjosICdjb250ZXh0X21ldGFwb3N0JywgZ2V0KGc6LCAnY29udGV4dF9tZXRhcG9zdCcsIDEpKQorICBzZXRsb2NhbCBvbW5pZnVuYz1jb250ZXh0I2NvbXBsZXRlCisgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfY29udGV4dCA9ICdtZlx3XCssbXBcd1wrJworICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX2NvbnRleHQgPSAnbWZUb2RvQ29tbWVudCcKK2VuZGlmCiAKIGxldCAmbDpkZWZpbmU9J1xcXCUoW2VneF1cfGNoYXJcfG1hdGhjaGFyXHxjb3VudFx8ZGltZW5cfG11c2tpcFx8c2tpcFx8dG9rc1wpXD0nCiAgICAgICAgIFwgLiAgICAgJ2RlZlx8XFxmb250XHxcXFwlKGZ1dHVyZVwpXD1sZXQnCiAgICAgICAgIFwgLiAnXHxcXG5ld1wlKGNvdW50XHxkaW1lblx8c2tpcFx8bXVza2lwXHxib3hcfHRva3NcfHJlYWRcfHdyaXRlJwogICAgICAgICBcIC4gICAgICdcfGZhbVx8aW5zZXJ0XHxpZlwpJwogCi1sZXQgJmw6aW5jbHVkZSA9ICdeXHMqXCUoaW5wdXRcfGNvbXBvbmVudFwpJworbGV0ICZsOmluY2x1ZGUgPSAnXlxzKlxcXCUoaW5wdXRcfGNvbXBvbmVudFx8cHJvZHVjdFx8cHJvamVjdFx8ZW52aXJvbm1lbnRcKScKIAogc2V0bG9jYWwgc3VmZml4ZXNhZGQ9LnRleAogCkBAIC0zMSw1ICs0Miw2MSBAQAogICAgICAgICBcICdcXHN0YXJ0XChcYVwrXCk6XFxzdG9wXDEnCiBlbmRpZgogCitsZXQgczpjb250ZXh0X3JlZ2V4ID0geworICAgICAgXCAnYmVnaW5zZWN0aW9uJyA6ICdcXFwlKHN0YXJ0XClcPVwlKFwlKHN1YlwpKnNlY3Rpb25cfFwlKHN1YlwpKnN1YmplY3RcfGNoYXB0ZXJcfHBhcnRcfGNvbXBvbmVudFx8cHJvZHVjdFx8dGl0bGVcKVw+JywKKyAgICAgIFwgJ2VuZHNlY3Rpb24nICAgOiAnXFxcJShzdG9wXClcPVwlKFwlKHN1YlwpKnNlY3Rpb25cfFwlKHN1YlwpKnN1YmplY3RcfGNoYXB0ZXJcfHBhcnRcfGNvbXBvbmVudFx8cHJvZHVjdFx8dGl0bGVcKVw+JywKKyAgICAgIFwgJ2JlZ2luYmxvY2snICAgOiAnXFxcJShzdGFydFx8c2V0dXBcfGRlZmluZVwpJywKKyAgICAgIFwgJ2VuZGJsb2NrJyAgICAgOiAnXFxcJShzdG9wXHxzZXR1cFx8ZGVmaW5lXCknCisgICAgICBcIH0KKworZnVuY3Rpb24hIHM6bW92ZV9hcm91bmQoY291bnQsIHdoYXQsIGZsYWdzLCB2aXN1YWwpCisgIGlmIGE6dmlzdWFsCisgICAgZXhlICJub3JtYWwhIGd2IgorICBlbmRpZgorICBjYWxsIHNlYXJjaChzOmNvbnRleHRfcmVnZXhbYTp3aGF0XSwgYTpmbGFncy4ncycpICIgJ3MnIHNldHMgcHJldmlvdXMgY29udGV4dCBtYXJrCisgIGNhbGwgbWFwKHJhbmdlKDIsIGE6Y291bnQpLCAnc2VhcmNoKHM6Y29udGV4dF9yZWdleFthOndoYXRdLCBhOmZsYWdzKScpCitlbmRmdW5jdGlvbgorCisiIE1vdmUgYXJvdW5kIG1hY3Jvcy4KK25ub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gW1sgOjxDLVU+Y2FsbCA8U0lEPm1vdmVfYXJvdW5kKHY6Y291bnQxLCAiYmVnaW5zZWN0aW9uIiwgImJXIiwgdjpmYWxzZSkgPENSPgordm5vcmVtYXAgPHNpbGVudD48YnVmZmVyPiBbWyA6PEMtVT5jYWxsIDxTSUQ+bW92ZV9hcm91bmQodjpjb3VudDEsICJiZWdpbnNlY3Rpb24iLCAiYlciLCB2OnRydWUpICA8Q1I+Citubm9yZW1hcCA8c2lsZW50PjxidWZmZXI+IF1dIDo8Qy1VPmNhbGwgPFNJRD5tb3ZlX2Fyb3VuZCh2OmNvdW50MSwgImJlZ2luc2VjdGlvbiIsICJXIiwgIHY6ZmFsc2UpIDxDUj4KK3Zub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gXV0gOjxDLVU+Y2FsbCA8U0lEPm1vdmVfYXJvdW5kKHY6Y291bnQxLCAiYmVnaW5zZWN0aW9uIiwgIlciLCAgdjp0cnVlKSAgPENSPgorbm5vcmVtYXAgPHNpbGVudD48YnVmZmVyPiBbXSA6PEMtVT5jYWxsIDxTSUQ+bW92ZV9hcm91bmQodjpjb3VudDEsICJlbmRzZWN0aW9uIiwgICAiYlciLCB2OmZhbHNlKSA8Q1I+Cit2bm9yZW1hcCA8c2lsZW50PjxidWZmZXI+IFtdIDo8Qy1VPmNhbGwgPFNJRD5tb3ZlX2Fyb3VuZCh2OmNvdW50MSwgImVuZHNlY3Rpb24iLCAgICJiVyIsIHY6dHJ1ZSkgIDxDUj4KK25ub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gXVsgOjxDLVU+Y2FsbCA8U0lEPm1vdmVfYXJvdW5kKHY6Y291bnQxLCAiZW5kc2VjdGlvbiIsICAgIlciLCAgdjpmYWxzZSkgPENSPgordm5vcmVtYXAgPHNpbGVudD48YnVmZmVyPiBdWyA6PEMtVT5jYWxsIDxTSUQ+bW92ZV9hcm91bmQodjpjb3VudDEsICJlbmRzZWN0aW9uIiwgICAiVyIsICB2OnRydWUpICA8Q1I+Citubm9yZW1hcCA8c2lsZW50PjxidWZmZXI+IFt7IDo8Qy1VPmNhbGwgPFNJRD5tb3ZlX2Fyb3VuZCh2OmNvdW50MSwgImJlZ2luYmxvY2siLCAgICJiVyIsIHY6ZmFsc2UpIDxDUj4KK3Zub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gW3sgOjxDLVU+Y2FsbCA8U0lEPm1vdmVfYXJvdW5kKHY6Y291bnQxLCAiYmVnaW5ibG9jayIsICAgImJXIiwgdjp0cnVlKSAgPENSPgorbm5vcmVtYXAgPHNpbGVudD48YnVmZmVyPiBdfSA6PEMtVT5jYWxsIDxTSUQ+bW92ZV9hcm91bmQodjpjb3VudDEsICJlbmRibG9jayIsICAgICAiVyIsICB2OmZhbHNlKSA8Q1I+Cit2bm9yZW1hcCA8c2lsZW50PjxidWZmZXI+IF19IDo8Qy1VPmNhbGwgPFNJRD5tb3ZlX2Fyb3VuZCh2OmNvdW50MSwgImVuZGJsb2NrIiwgICAgICJXIiwgIHY6dHJ1ZSkgIDxDUj4KKworIiBPdGhlciB1c2VmdWwgbWFwcGluZ3MKK2lmIGdldChnOiwgJ2NvbnRleHRfbWFwcGluZ3MnLCAxKQorICBsZXQgczp0cF9yZWdleCA9ICc/XiRcfF5ccypcXFwoaXRlbVx8c3RhcnRcfHN0b3BcfGJsYW5rXHxcJShzdWJcKSpzZWN0aW9uXHxjaGFwdGVyXHxcJShzdWJcKSpzdWJqZWN0XHx0aXRsZVx8cGFydFwpJworCisgIGZ1biEgczp0cCgpCisgICAgY2FsbCBjdXJzb3Ioc2VhcmNoKHM6dHBfcmVnZXgsICdiY1cnKSArIDEsIDEpCisgICAgbm9ybWFsISBWCisgICAgY2FsbCBjdXJzb3Ioc2VhcmNoKHM6dHBfcmVnZXgsICdXJykgLSAxLCAxKQorICBlbmRmCisKKyAgIiBSZWZsb3cgcGFyYWdyYXBocyB3aXRoIGNvbW1hbmRzIGxpa2UgZ3F0cCAoImdxIFRlWCBwYXJhZ3JhcGgiKQorICBvbm9yZW1hcCA8c2lsZW50PjxidWZmZXI+IHRwIDo8Yy11PmNhbGwgPHNpZD50cCgpPGNyPgorICAiIFNlbGVjdCBUZVggcGFyYWdyYXBoCisgIHZub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gdHAgPGVzYz46PGMtdT5jYWxsIDxzaWQ+dHAoKTxjcj4KKworICAiICQuLi4kIHRleHQgb2JqZWN0CisgIG9ub3JlbWFwIDxzaWxlbnQ+PGJ1ZmZlcj4gaSQgOjxjLXU+bm9ybWFsISBUJHZ0JDxjcj4KKyAgb25vcmVtYXAgPHNpbGVudD48YnVmZmVyPiBhJCA6PGMtdT5ub3JtYWwhIEYkdmYkPGNyPgorICB2bm9yZW1hcCA8YnVmZmVyPiBpJCBUJG90JAorICB2bm9yZW1hcCA8YnVmZmVyPiBhJCBGJG9mJAorZW5kaWYKKworIiBDb21tYW5kcyBmb3IgYXN5bmNocm9ub3VzIHR5cGVzZXR0aW5nCitjb21tYW5kISAtYnVmZmVyIC1uYXJncz0/IC1jb21wbGV0ZT1maWxlIENvblRlWHQgICAgICAgICAgY2FsbCBjb250ZXh0I3R5cGVzZXQoPHEtYXJncz4pCitjb21tYW5kISAgICAgICAgIC1uYXJncz0wICAgICAgICAgICAgICAgIENvblRlWHRKb2JTdGF0dXMgY2FsbCBjb250ZXh0I2pvYl9zdGF0dXMoKQorY29tbWFuZCEgICAgICAgICAtbmFyZ3M9MCAgICAgICAgICAgICAgICBDb25UZVh0U3RvcEpvYnMgIGNhbGwgY29udGV4dCNzdG9wX2pvYnMoKQorCiBsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKIHVubGV0IHM6Y3BvX3NhdmUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2NvbnRleHQudmltIGIvcnVudGltZS9pbmRlbnQvY29udGV4dC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUyNDc5ZgotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvaW5kZW50L2NvbnRleHQudmltCkBAIC0wLDAgKzEsMzYgQEAKKyIgQ29uVGVYdCBpbmRlbnQgZmlsZQorIiBMYW5ndWFnZTogQ29uVGVYdCB0eXBlc2V0dGluZyBlbmdpbmUKKyIgTWFpbnRhaW5lcjogTmljb2xhIFZpdGFjb2xvbm5hIDxudml0YWNvbG9ubmFAZ21haWwuY29tPgorIiBMYXN0IENoYW5nZTogIDIwMTYgT2N0IDE1CisKK2lmIGV4aXN0cygiYjpkaWRfaW5kZW50IikKKyAgZmluaXNoCitlbmRpZgorCitpZiAhZ2V0KGI6LCAnY29udGV4dF9tZXRhcG9zdCcsIGdldChnOiwgJ2NvbnRleHRfbWV0YXBvc3QnLCAxKSkKKyAgZmluaXNoCitlbmRpZgorCisiIExvYWQgTWV0YVBvc3QgaW5kZW50YXRpb24gc2NyaXB0CitydW50aW1lISBpbmRlbnQvbXAudmltCisKK2xldCBzOmtlZXBjcG89ICZjcG8KK3NldCBjcG8mdmltCisKK3NldGxvY2FsIGluZGVudGV4cHI9R2V0Q29uVGVYdEluZGVudCgpCisKK2xldCBiOnVuZG9faW5kZW50ID0gInNldGwgaW5kZW50ZXhwcjwiCisKK2Z1bmN0aW9uISBHZXRDb25UZVh0SW5kZW50KCkKKyAgIiBVc2UgTWV0YVBvc3QgcnVsZXMgaW5zaWRlIE1ldGFQb3N0IGdyYXBoaWMgZW52aXJvbm1lbnRzCisgIGlmIGxlbihzeW5zdGFjayh2OmxudW0sIDEpKSA+IDAgJiYKKyAgICAgICAgXCBzeW5JRGF0dHIoc3luc3RhY2sodjpsbnVtLCAxKVswXSwgIm5hbWUiKSA9PSMgJ2NvbnRleHRNUEdyYXBoaWMnCisgICAgcmV0dXJuIEdldE1ldGFQb3N0SW5kZW50KCkKKyAgZW5kaWYKKyAgcmV0dXJuIC0xCitlbmRmdW5jCisKK2xldCAmY3BvID0gczprZWVwY3BvCit1bmxldCBzOmtlZXBjcG8KKworIiB2aW06c3c9MgpkaWZmIC0tZ2l0IGEvcnVudGltZS9sYW5nL21lbnVfc2xfc2kuY3AxMjUwLnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X3NsX3NpLmNwMTI1MC52aW0KaW5kZXggODk5OWIxNS4uNWI1NDgyZCAxMDA2NDQKLS0tIGEvcnVudGltZS9sYW5nL21lbnVfc2xfc2kuY3AxMjUwLnZpbQorKysgYi9ydW50aW1lL2xhbmcvbWVudV9zbF9zaS5jcDEyNTAudmltCkBAIC0xLDcgKzEsNyBAQAogIiBNZW51IFRyYW5zbGF0aW9uczoJU2xvdmVuaWFuIC8gU2xvdmVuc2tvCiAiIE1haW50YWluZXI6CQlNb2pjYSBNaWtsYXZlYyA8bW9qY2EubWlrbGF2ZWMubGlzdHNAZ21haWwuY29tPgogIiBPcmlnaW5hbGx5IEJ5OglNb2pjYSBNaWtsYXZlYyA8bW9qY2EubWlrbGF2ZWMubGlzdHNAZ21haWwuY29tPgotIiBMYXN0IENoYW5nZToJCVNhdCwgMTcgSnVuIDIwMDYKKyIgTGFzdCBDaGFuZ2U6CQkyMDE2IE9jdCAxNwogIiB2aW06c2V0IGZvbGRtZXRob2Q9bWFya2VyIHRhYnN0b3A9ODoKIAogIiBUT0RPOiBhZGQvY2hlY2sgYWxsICcmJ3MKQEAgLTMxLDcgKzMxLDcgQEAKIAogaWYgaGFzKCJkaWZmIikKICAgICBtZW51dHJhbnMgU3BsaXRcICZEaWZmXCB3aXRoXC5cLlwuCVByaW1lcmphalwgelwgKGRpJmZmKVwgXC5cLlwuCi0gICAgbWVudXRyYW5zIFNwbGl0XCBQYXRjaGVkXCAmQnlcLlwuXC4JJlBvcHJhdmlcIHpcIChwYXRjaClcIFwuXC5cLgorICAgIG1lbnV0cmFucyBTcGxpdFwgUGF0Y2hlZFwgJkJ5XC5cLlwuCSZQb3ByYXZpXCBzXCAocGF0Y2gpXCBcLlwuXC4KIGVuZGlmCiAiIH19fSBGSUxFIC8gREFUT1RFS0EKIApAQCAtOTYsMTIgKzk2LDEyIEBACiBtZW51dHJhbnMgVGUmeHRcIFdpZHRoXC5cLlwuCQkJCYppcmluYVwgYmVzZWRpbGFcIFwuXC5cLgogbWVudXRyYW5zICZGaWxlXCBGb3JtYXRcLlwuXC4JCQkJRm9ybWF0XCAmZGF0b3Rla2VcIFwuXC5cLgogbWVudXRyYW5zIEMmb2xvclwgU2NoZW1lCQkJCSZCYXJ2bmFcIHNoZW1hXCBcLlwuXC4KLW1lbnV0cmFucyAmS2V5bWFwCQkJCQkmS2V5bWFwCittZW51dHJhbnMgJktleW1hcAkJCQkJUmF6cG9yZWRpdGV2XCB0aXAmawogbWVudXRyYW5zIFNlbGVjdFwgRm8mbnRcLlwuXC4JCQkJUGlzYXZhXCBcLlwuXC4KICIgfX19IEVESVQgLyBVUkVESQogCiAiIHt7eyAgVE9PTFMgLyBPUk9ESkEKLW1lbnV0cmFucyAmVG9vbHMJCQkJCSZPcm9kamEKK21lbnV0cmFucyAmVG9vbHMJCQkJCU8mcm9kamEKIG1lbnV0cmFucyAmSnVtcFwgdG9cIHRoaXNcIHRhZzxUYWI+Z15dCQkJJlNrb+hpXCBrXCB0ZWpcIHpuYehraTxUYWI+Z15dCiBtZW51dHJhbnMgSnVtcFwgJmJhY2s8VGFiPl5UCQkJCVNrb+hpXCBOYSZ6YWo8VGFiPl5UCiBtZW51dHJhbnMgQnVpbGRcICZUYWdzXCBGaWxlCQkJCU5hcHJhdmlcIGRhdG90ZWtlXCB6XCB6bmHoa2FtaVwgKHRhZykKQEAgLTE3NSw3ICsxNzUsNyBAQAogbWVudXRyYW5zIFNlJlRcIENvbXBpbGVyCQkJCU5hc3RhdmlcICZwcmV2YWphbG5payAiIGJ1ZyBpbiBvcmlnaW5hbCB0cmFuc2xhdGlvbj8KIAogbWVudXRyYW5zICZDb252ZXJ0XCB0b1wgSEVYPFRhYj46JSF4eGQJCQlQcmV0dm9yaVwgdlwgSEUmWDxUYWI+OiUheHhkCi1tZW51dHJhbnMgQ29udmUmcnRcIGJhY2s8VGFiPjolIXh4ZFwgLXIJCQlQcmV0dm9yaVwgbmF6YWo8VGFiPjolIXh4ZFwgLXIKK21lbnV0cmFucyBDb252ZSZydFwgYmFjazxUYWI+OiUheHhkXCAtcgkJCVBvdnJuaVwgcHJldHZvJnJibzxUYWI+OiUheHhkXCAtcgogIiB9fX0gIFRPT0xTIC8gT1JPREpBCiAKICIge3t7IFNZTlRBWCAvIEJBUlZBTkpFIEtPREUKQEAgLTI0Miw3ICsyNDIsNyBAQAogIiB7e3sgUE9QVVAKIG1lbnV0cmFucyAmVW5kbwkJCQkmUmF6dmVsamF2aQogbWVudXRyYW5zIEN1JnQJCQkJJkl6cmWeaQotbWVudXRyYW5zICZDb3B5CQkJCSZLb3BpZXJhagorbWVudXRyYW5zICZDb3B5CQkJCSZLb3BpcmFqCiBtZW51dHJhbnMgJlBhc3RlCQkJJlByaWxlcGkKIG1lbnV0cmFucyAmRGVsZXRlCQkJJlpicmmaaQogbWVudXRyYW5zIFNlbGVjdFwgQmxvY2t3aXNlCQlJemJpcmFqXCBwb1wgYmxva2loCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9zbF9zaS5sYXRpbjIudmltIGIvcnVudGltZS9sYW5nL21lbnVfc2xfc2kubGF0aW4yLnZpbQppbmRleCBmZDUwMzg3Li5hODEwYTJhIDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9zbF9zaS5sYXRpbjIudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X3NsX3NpLmxhdGluMi52aW0KQEAgLTEsNyArMSw3IEBACiAiIE1lbnUgVHJhbnNsYXRpb25zOglTbG92ZW5pYW4gLyBTbG92ZW5za28KICIgTWFpbnRhaW5lcjoJCU1vamNhIE1pa2xhdmVjIDxtb2pjYS5taWtsYXZlYy5saXN0c0BnbWFpbC5jb20+CiAiIE9yaWdpbmFsbHkgQnk6CU1vamNhIE1pa2xhdmVjIDxtb2pjYS5taWtsYXZlYy5saXN0c0BnbWFpbC5jb20+Ci0iIExhc3QgQ2hhbmdlOgkJTW9uLCAxMiBKdW4gMjAwNiAwMDowMDowMCBDRVNUCisiIExhc3QgQ2hhbmdlOgkJMjAxNiBPY3QgMTcKICIgdmltOnNldCBmb2xkbWV0aG9kPW1hcmtlciB0YWJzdG9wPTg6CiAKICIgVE9ETzogYWRkL2NoZWNrIGFsbCAnJidzCkBAIC0zMSw3ICszMSw3IEBACiAKIGlmIGhhcygiZGlmZiIpCiAgICAgbWVudXRyYW5zIFNwbGl0XCAmRGlmZlwgd2l0aFwuXC5cLglQcmltZXJqYWpcIHpcIChkaSZmZilcIFwuXC5cLgotICAgIG1lbnV0cmFucyBTcGxpdFwgUGF0Y2hlZFwgJkJ5XC5cLlwuCSZQb3ByYXZpXCB6XCAocGF0Y2gpXCBcLlwuXC4KKyAgICBtZW51dHJhbnMgU3BsaXRcIFBhdGNoZWRcICZCeVwuXC5cLgkmUG9wcmF2aVwgc1wgKHBhdGNoKVwgXC5cLlwuCiBlbmRpZgogIiB9fX0gRklMRSAvIERBVE9URUtBCiAKQEAgLTk2LDEyICs5NiwxMiBAQAogbWVudXRyYW5zIFRlJnh0XCBXaWR0aFwuXC5cLgkJCQmpaXJpbmFcIGJlc2VkaWxhXCBcLlwuXC4KIG1lbnV0cmFucyAmRmlsZVwgRm9ybWF0XC5cLlwuCQkJCUZvcm1hdFwgJmRhdG90ZWtlXCBcLlwuXC4KIG1lbnV0cmFucyBDJm9sb3JcIFNjaGVtZQkJCQkmQmFydm5hXCBzaGVtYVwgXC5cLlwuCi1tZW51dHJhbnMgJktleW1hcAkJCQkJJktleW1hcAorbWVudXRyYW5zICZLZXltYXAJCQkJCVJhenBvcmVkaXRldlwgdGlwJmsKIG1lbnV0cmFucyBTZWxlY3RcIEZvJm50XC5cLlwuCQkJCVBpc2F2YVwgXC5cLlwuCiAiIH19fSBFRElUIC8gVVJFREkKIAogIiB7e3sgIFRPT0xTIC8gT1JPREpBCi1tZW51dHJhbnMgJlRvb2xzCQkJCQkmT3JvZGphCittZW51dHJhbnMgJlRvb2xzCQkJCQlPJnJvZGphCiBtZW51dHJhbnMgJkp1bXBcIHRvXCB0aGlzXCB0YWc8VGFiPmdeXQkJCSZTa2/oaVwga1wgdGVqXCB6bmHoa2k8VGFiPmdeXQogbWVudXRyYW5zIEp1bXBcICZiYWNrPFRhYj5eVAkJCQlTa2/oaVwgTmEmemFqPFRhYj5eVAogbWVudXRyYW5zIEJ1aWxkXCAmVGFnc1wgRmlsZQkJCQlOYXByYXZpXCBkYXRvdGVrZVwgelwgem5h6GthbWlcICh0YWcpCkBAIC0xNzUsNyArMTc1LDcgQEAKIG1lbnV0cmFucyBTZSZUXCBDb21waWxlcgkJCQlOYXN0YXZpXCAmcHJldmFqYWxuaWsgIiBidWcgaW4gb3JpZ2luYWwgdHJhbnNsYXRpb24/CiAKIG1lbnV0cmFucyAmQ29udmVydFwgdG9cIEhFWDxUYWI+OiUheHhkCQkJUHJldHZvcmlcIHZcIEhFJlg8VGFiPjolIXh4ZAotbWVudXRyYW5zIENvbnZlJnJ0XCBiYWNrPFRhYj46JSF4eGRcIC1yCQkJUHJldHZvcmlcIG5hemFqPFRhYj46JSF4eGRcIC1yCittZW51dHJhbnMgQ29udmUmcnRcIGJhY2s8VGFiPjolIXh4ZFwgLXIJCQlQb3ZybmlcIHByZXR2byZyYm88VGFiPjolIXh4ZFwgLXIKICIgfX19ICBUT09MUyAvIE9ST0RKQQogCiAiIHt7eyBTWU5UQVggLyBCQVJWQU5KRSBLT0RFCkBAIC0yNDIsNyArMjQyLDcgQEAKICIge3t7IFBPUFVQCiBtZW51dHJhbnMgJlVuZG8JCQkJJlJhenZlbGphdmkKIG1lbnV0cmFucyBDdSZ0CQkJCSZJenJlvmkKLW1lbnV0cmFucyAmQ29weQkJCQkmS29waWVyYWoKK21lbnV0cmFucyAmQ29weQkJCQkmS29waXJhagogbWVudXRyYW5zICZQYXN0ZQkJCSZQcmlsZXBpCiBtZW51dHJhbnMgJkRlbGV0ZQkJCSZaYnJpuWkKIG1lbnV0cmFucyBTZWxlY3RcIEJsb2Nrd2lzZQkJSXpiaXJhalwgcG9cIGJsb2tpaApkaWZmIC0tZ2l0IGEvcnVudGltZS9sYW5nL21lbnVfc2xfc2kudXRmLTgudmltIGIvcnVudGltZS9sYW5nL21lbnVfc2xfc2kudXRmLTgudmltCmluZGV4IDcwNDNlNjIuLmFjNTAzNWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvbGFuZy9tZW51X3NsX3NpLnV0Zi04LnZpbQorKysgYi9ydW50aW1lL2xhbmcvbWVudV9zbF9zaS51dGYtOC52aW0KQEAgLTEsNyArMSw3IEBACiAiIE1lbnUgVHJhbnNsYXRpb25zOglTbG92ZW5pYW4gLyBTbG92ZW5za28KICIgTWFpbnRhaW5lcjoJCU1vamNhIE1pa2xhdmVjIDxtb2pjYS5taWtsYXZlYy5saXN0c0BnbWFpbC5jb20+CiAiIE9yaWdpbmFsbHkgQnk6CU1vamNhIE1pa2xhdmVjIDxtb2pjYS5taWtsYXZlYy5saXN0c0BnbWFpbC5jb20+Ci0iIExhc3QgQ2hhbmdlOgkJU2F0LCAxNyBKdW4gMjAwNgorIiBMYXN0IENoYW5nZToJCTIwMTYgT2N0IDE3CiAiIHZpbTpzZXQgZm9sZG1ldGhvZD1tYXJrZXIgdGFic3RvcD04OgogCiAiIFRPRE86IGFkZC9jaGVjayBhbGwgJyYncwpAQCAtMzEsNyArMzEsNyBAQAogCiBpZiBoYXMoImRpZmYiKQogICAgIG1lbnV0cmFucyBTcGxpdFwgJkRpZmZcIHdpdGhcLlwuXC4JUHJpbWVyamFqXCB6XCAoZGkmZmYpXCBcLlwuXC4KLSAgICBtZW51dHJhbnMgU3BsaXRcIFBhdGNoZWRcICZCeVwuXC5cLgkmUG9wcmF2aVwgelwgKHBhdGNoKVwgXC5cLlwuCisgICAgbWVudXRyYW5zIFNwbGl0XCBQYXRjaGVkXCAmQnlcLlwuXC4JJlBvcHJhdmlcIHNcIChwYXRjaClcIFwuXC5cLgogZW5kaWYKICIgfX19IEZJTEUgLyBEQVRPVEVLQQogCkBAIC05NiwxMiArOTYsMTIgQEAKIG1lbnV0cmFucyBUZSZ4dFwgV2lkdGhcLlwuXC4JCQkJxaBpcmluYVwgYmVzZWRpbGFcIFwuXC5cLgogbWVudXRyYW5zICZGaWxlXCBGb3JtYXRcLlwuXC4JCQkJRm9ybWF0XCAmZGF0b3Rla2VcIFwuXC5cLgogbWVudXRyYW5zIEMmb2xvclwgU2NoZW1lCQkJCSZCYXJ2bmFcIHNoZW1hXCBcLlwuXC4KLW1lbnV0cmFucyAmS2V5bWFwCQkJCQkmS2V5bWFwCittZW51dHJhbnMgJktleW1hcAkJCQkJUmF6cG9yZWRpdGV2XCB0aXAmawogbWVudXRyYW5zIFNlbGVjdFwgRm8mbnRcLlwuXC4JCQkJUGlzYXZhXCBcLlwuXC4KICIgfX19IEVESVQgLyBVUkVESQogCiAiIHt7eyAgVE9PTFMgLyBPUk9ESkEKLW1lbnV0cmFucyAmVG9vbHMJCQkJCSZPcm9kamEKK21lbnV0cmFucyAmVG9vbHMJCQkJCU8mcm9kamEKIG1lbnV0cmFucyAmSnVtcFwgdG9cIHRoaXNcIHRhZzxUYWI+Z15dCQkJJlNrb8SNaVwga1wgdGVqXCB6bmHEjWtpPFRhYj5nXl0KIG1lbnV0cmFucyBKdW1wXCAmYmFjazxUYWI+XlQJCQkJU2tvxI1pXCBOYSZ6YWo8VGFiPl5UCiBtZW51dHJhbnMgQnVpbGRcICZUYWdzXCBGaWxlCQkJCU5hcHJhdmlcIGRhdG90ZWtlXCB6XCB6bmHEjWthbWlcICh0YWcpCkBAIC0xNzUsNyArMTc1LDcgQEAKIG1lbnV0cmFucyBTZSZUXCBDb21waWxlcgkJCQlOYXN0YXZpXCAmcHJldmFqYWxuaWsgIiBidWcgaW4gb3JpZ2luYWwgdHJhbnNsYXRpb24/CiAKIG1lbnV0cmFucyAmQ29udmVydFwgdG9cIEhFWDxUYWI+OiUheHhkCQkJUHJldHZvcmlcIHZcIEhFJlg8VGFiPjolIXh4ZAotbWVudXRyYW5zIENvbnZlJnJ0XCBiYWNrPFRhYj46JSF4eGRcIC1yCQkJUHJldHZvcmlcIG5hemFqPFRhYj46JSF4eGRcIC1yCittZW51dHJhbnMgQ29udmUmcnRcIGJhY2s8VGFiPjolIXh4ZFwgLXIJCQlQb3ZybmlcIHByZXR2byZyYm88VGFiPjolIXh4ZFwgLXIKICIgfX19ICBUT09MUyAvIE9ST0RKQQogCiAiIHt7eyBTWU5UQVggLyBCQVJWQU5KRSBLT0RFCkBAIC0yNDIsNyArMjQyLDcgQEAKICIge3t7IFBPUFVQCiBtZW51dHJhbnMgJlVuZG8JCQkJJlJhenZlbGphdmkKIG1lbnV0cmFucyBDdSZ0CQkJCSZJenJlxb5pCi1tZW51dHJhbnMgJkNvcHkJCQkJJktvcGllcmFqCittZW51dHJhbnMgJkNvcHkJCQkJJktvcGlyYWoKIG1lbnV0cmFucyAmUGFzdGUJCQkmUHJpbGVwaQogbWVudXRyYW5zICZEZWxldGUJCQkmWmJyacWhaQogbWVudXRyYW5zIFNlbGVjdFwgQmxvY2t3aXNlCQlJemJpcmFqXCBwb1wgYmxva2loCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9jb250ZXh0LnZpbSBiL3J1bnRpbWUvc3ludGF4L2NvbnRleHQudmltCmluZGV4IDIyNWNjNmUuLmIyOWYyNTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2NvbnRleHQudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2NvbnRleHQudmltCkBAIC0xLDcgKzEsOCBAQAogIiBWaW0gc3ludGF4IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICAgICAgQ29uVGVYdCB0eXBlc2V0dGluZyBlbmdpbmUKLSIgTWFpbnRhaW5lcjogICAgICAgTmlrb2xhaSBXZWlidWxsIDxub3dAYml0d2kuc2U+Ci0iIExhdGVzdCBSZXZpc2lvbjogIDIwMDYtMDgtMTAKKyIgTGFuZ3VhZ2U6ICAgICAgICAgICBDb25UZVh0IHR5cGVzZXR0aW5nIGVuZ2luZQorIiBNYWludGFpbmVyOiAgICAgICAgIE5pY29sYSBWaXRhY29sb25uYSA8bnZpdGFjb2xvbm5hQGdtYWlsLmNvbT4KKyIgRm9ybWVyIE1haW50YWluZXJzOiBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KKyIgTGF0ZXN0IFJldmlzaW9uOiAgICAyMDE2IE9jdCAxNgogCiBpZiBleGlzdHMoImI6Y3VycmVudF9zeW50YXgiKQogICBmaW5pc2gKQEAgLTEzLDY1ICsxNCw5MyBAQAogbGV0IHM6Y3BvX3NhdmUgPSAmY3BvCiBzZXQgY3BvJnZpbQogCi1pZiAhZXhpc3RzKCdnOmNvbnRleHRfaW5jbHVkZScpCi0gIGxldCBnOmNvbnRleHRfaW5jbHVkZSA9IFsnbXAnLCAnamF2YXNjcmlwdCcsICd4bWwnXQorIiBEaWN0aW9uYXJ5IG9mIChmaWxldHlwZSwgZ3JvdXApIHBhaXJzIHRvIGhpZ2hsaWdodCBiZXR3ZWVuIFxzdGFydEdST1VQIFxzdG9wR1JPVVAuCitsZXQgczpjb250ZXh0X2luY2x1ZGUgPSBnZXQoYjosICdjb250ZXh0X2luY2x1ZGUnLCBnZXQoZzosICdjb250ZXh0X2luY2x1ZGUnLCB7J3htbCc6ICdYTUwnfSkpCisKKyIgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGc6Y29udGV4dF9pbmNsdWRlIHVzZWQgdG8gYmUgYSBMaXN0KQoraWYgdHlwZShzOmNvbnRleHRfaW5jbHVkZSkgPT0jIHR5cGUoW10pCisgIGxldCBnOmNvbnRleHRfbWV0YXBvc3QgPSAoaW5kZXgoczpjb250ZXh0X2luY2x1ZGUsICdtcCcpICE9IC0xKQorICBsZXQgczpjb250ZXh0X2luY2x1ZGUgPSBmaWx0ZXIoCisgICAgICAgIFwgeydjJzogJ0MnLCAnamF2YXNjcmlwdCc6ICdKUycsICdydWJ5JzogJ1J1YnknLCAneG1sJzogJ1hNTCd9LAorICAgICAgICBcIHsgayxfIC0+IGluZGV4KHM6Y29udGV4dF9pbmNsdWRlLCBrKSAhPSAtMSB9CisgICAgICAgIFwgKQogZW5kaWYKIAorc3luIGlza2V5d29yZCBALDQ4LTU3LGEteixBLVosMTkyLTI1NQorCiBzeW4gc3BlbGwgICB0b3BsZXZlbAogCi1zeW4gbWF0Y2ggICBjb250ZXh0QmxvY2tEZWxpbSBkaXNwbGF5ICdcXFwlKHN0YXJ0XHxzdG9wXClcYVwrJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBjb250YWlucz1ATm9TcGVsbAorIiBDb25UZVh0IG9wdGlvbnMsIGkuZS4sIFsuLi5dIGJsb2Nrcworc3luIHJlZ2lvbiAgY29udGV4dE9wdGlvbnMgICAgbWF0Y2hncm91cD1jb250ZXh0RGVsaW1pdGVyIHN0YXJ0PSdcWycgIGVuZD0nXVx8XHplXFxzdG9wJyBza2lwPSdcXFxbXHxcXFxdJyBjb250YWlucz1BTExCVVQsY29udGV4dEJlZ2luRW5kTHVhLEBTcGVsbAogCi1zeW4gcmVnaW9uICBjb250ZXh0RXNjYXBlZCAgICBkaXNwbGF5IG1hdGNoZ3JvdXA9Y29udGV4dFByZVByb2MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgc3RhcnQ9J1xcdHlwZVx6KFxBXCknIGVuZD0nXHoxJwotc3luIHJlZ2lvbiAgY29udGV4dEVzY2FwZWQgICAgZGlzcGxheSBtYXRjaGdyb3VwPWNvbnRleHRQcmVQcm9jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIHN0YXJ0PSdcXHR5cGVcPXsnIGVuZD0nfScKLXN5biByZWdpb24gIGNvbnRleHRFc2NhcGVkICAgIGRpc3BsYXkgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFx0eXBlXD08PCcgZW5kPSc+PicKKyIgSGlnaGxpZ2h0IGJyYWNlcworc3luIG1hdGNoICAgY29udGV4dERlbGltaXRlciAgJ1t7fV0nCisKKyIgQ29tbWVudHMKK3N5biBtYXRjaCAgIGNvbnRleHRDb21tZW50ICdcXFxAPCFcJShcXFxcXCkqXHpzJS4qJCcgZGlzcGxheSBjb250YWlucz1pbml0ZXhUb2RvCitzeW4gbWF0Y2ggICBjb250ZXh0Q29tbWVudCAnXlxzKiVbQ0RNXS4qJCcgICAgICAgICAgIGRpc3BsYXkgY29udGFpbnM9aW5pdGV4VG9kbworCitzeW4gbWF0Y2ggICBjb250ZXh0QmxvY2tEZWxpbSAnXFxcJShzdGFydFx8c3RvcFwpXGFcKycgY29udGFpbnM9QE5vU3BlbGwKKworc3luIHJlZ2lvbiAgY29udGV4dEVzY2FwZWQgICAgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYyBzdGFydD0nXFx0eXBlXCUoXHMqXHxcblwpKlx6KFteQS1aYS16JV1cKScgZW5kPSdcejEnCitzeW4gcmVnaW9uICBjb250ZXh0RXNjYXBlZCAgICBtYXRjaGdyb3VwPWNvbnRleHRQcmVQcm9jIHN0YXJ0PSdcXHR5cGVcPVwlKFxzXHxcblwpKnsnIGVuZD0nfScKK3N5biByZWdpb24gIGNvbnRleHRFc2NhcGVkICAgIG1hdGNoZ3JvdXA9Y29udGV4dFByZVByb2Mgc3RhcnQ9J1xcdHlwZVw9XCUoXHMqXHxcblwpKjw8JyBlbmQ9Jz4+Jwogc3luIHJlZ2lvbiAgY29udGV4dEVzY2FwZWQgICAgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFxzdGFydFx6KFxhKlwlKHR5cGluZ1x8dHlwZW5cKVwpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBlbmQ9J1xcc3RvcFx6MScgY29udGFpbnM9cGxhaW50ZXhDb21tZW50IGtlZXBlbmQKLXN5biByZWdpb24gIGNvbnRleHRFc2NhcGVkICAgIGRpc3BsYXkgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFxcaFwrVHlwZXsnIGVuZD0nfScKLXN5biByZWdpb24gIGNvbnRleHRFc2NhcGVkICAgIGRpc3BsYXkgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFxUeXBlZFxoXCt7JyBlbmQ9J30nCitzeW4gcmVnaW9uICBjb250ZXh0RXNjYXBlZCAgICBtYXRjaGdyb3VwPWNvbnRleHRQcmVQcm9jIHN0YXJ0PSdcXFxoXCtUeXBlXCUoXHNcfFxuXCkqeycgZW5kPSd9Jworc3luIHJlZ2lvbiAgY29udGV4dEVzY2FwZWQgICAgbWF0Y2hncm91cD1jb250ZXh0UHJlUHJvYyBzdGFydD0nXFxUeXBlZFxoXCtcJShcc1x8XG5cKSp7JyBlbmQ9J30nCiAKIHN5biBtYXRjaCAgIGNvbnRleHRCdWlsdGluICAgIGRpc3BsYXkgY29udGFpbnM9QE5vU3BlbGwKLSAgICAgIFwgJ1xcXCUodW5wcm90ZWN0XHxwcm90ZWN0XHx1bmV4cGFuZGVkXCknIAorICAgICAgXCAnXFxcJSh1bnByb3RlY3RcfHByb3RlY3RcfHVuZXhwYW5kZWRcKVw+JwogCi1zeW4gbWF0Y2ggICBjb250ZXh0UHJlUHJvYyAgICAnXlxzKlxcXCUoc3RhcnRcfHN0b3BcKVw9XCUoY29tcG9uZW50XHxlbnZpcm9ubWVudFx8cHJvamVjdFx8cHJvZHVjdFwpLiokJworc3luIG1hdGNoICAgY29udGV4dFByZVByb2MgICAgJ15ccypcXFwlKHN0YXJ0XHxzdG9wXClcPVwlKGNvbXBvbmVudFx8ZW52aXJvbm1lbnRcfHByb2plY3RcfHByb2R1Y3RcKVw+JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBjb250YWlucz1ATm9TcGVsbAogCi1pZiBpbmRleChnOmNvbnRleHRfaW5jbHVkZSwgJ21wJykgIT0gLTEKK2lmIGdldChiOiwgJ2NvbnRleHRfbWV0YXBvc3QnLCBnZXQoZzosICdjb250ZXh0X21ldGFwb3N0JywgMSkpCisgIGxldCBiOm1wX21ldGFmdW5fbWFjcm9zID0gMSAiIEhpZ2hsaWdodCBNZXRhRnVuIGtleXdvcmRzCiAgIHN5biBpbmNsdWRlIEBtcFRvcCAgICAgICAgICBzeW50YXgvbXAudmltCiAgIHVubGV0IGI6Y3VycmVudF9zeW50YXgKIAotICBzeW4gcmVnaW9uICBjb250ZXh0TVBHcmFwaGljICB0cmFuc3BhcmVudCBtYXRjaGdyb3VwPWNvbnRleHRCbG9ja0RlbGltCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgc3RhcnQ9J1xcc3RhcnRceihcYSpNUGdyYXBoaWNcfE1QXCUocGFnZVx8aW5jbHVzaW9uc1x8cnVuXClcKS4qJworICBzeW4gcmVnaW9uICBjb250ZXh0TVBHcmFwaGljICBtYXRjaGdyb3VwPWNvbnRleHRCbG9ja0RlbGltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgc3RhcnQ9J1xcc3RhcnRceihNUFwlKGNsaXBcfGNvZGVcfGRlZmluaXRpb25zXHxkcmF3aW5nXHxlbnZpcm9ubWVudFx8ZXh0ZW5zaW9uc1x8aW5jbHVzaW9uc1x8aW5pdGlhbGl6YXRpb25zXHxwYWdlXHxcKVwpXD4uKiQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgZW5kPSdcXHN0b3BcejEnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgY29udGFpbnM9QG1wVG9wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgY29udGFpbnM9QG1wVG9wLEBOb1NwZWxsCisgIHN5biByZWdpb24gIGNvbnRleHRNUEdyYXBoaWMgIG1hdGNoZ3JvdXA9Y29udGV4dEJsb2NrRGVsaW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFxzdGFydFx6KFwlKFwlW3JlXXVzYWJsZVx8dXNlXHx1bmlxdWVcfHN0YXRpY1wpTVBncmFwaGljXHxzdGF0aWNNUGZpZ3VyZVx8dW5pcXVlTVBwYWdlZ3JhcGhpY1wpXD4uKiQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgZW5kPSdcXHN0b3BcejEnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgY29udGFpbnM9QG1wVG9wLEBOb1NwZWxsCiBlbmRpZgogCi0iIFRPRE86IGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBmb3IgXFx0eXBlQyBvciBzb21ldGhpbmcgYWxvbmcgdGhvc2UKLSIgbGluZXMuCi1mdW5jdGlvbiEgczppbmNsdWRlX3N5bnRheChuYW1lLCBncm91cCkKLSAgaWYgaW5kZXgoZzpjb250ZXh0X2luY2x1ZGUsIGE6bmFtZSkgIT0gLTEKLSAgICBleGVjdXRlICdzeW4gaW5jbHVkZSBAJyAuIGE6bmFtZSAuICdUb3AnICdzeW50YXgvJyAuIGE6bmFtZSAuICcudmltJwotICAgIHVubGV0IGI6Y3VycmVudF9zeW50YXgKLSAgICBleGVjdXRlICdzeW4gcmVnaW9uIGNvbnRleHQnIC4gYTpncm91cCAuICdDb2RlJwotICAgICAgICAgIFwgJ3RyYW5zcGFyZW50IG1hdGNoZ3JvdXA9Y29udGV4dEJsb2NrRGVsaW0nCi0gICAgICAgICAgXCAnc3RhcnQ9K1xcc3RhcnQnIC4gYTpncm91cCAuICcrIGVuZD0rXFxzdG9wJyAuIGE6Z3JvdXAgLiAnKycKLSAgICAgICAgICBcICdjb250YWlucz1AJyAuIGE6bmFtZSAuICdUb3AnCi0gIGVuZGlmCi1lbmRmdW5jdGlvbgoraWYgZ2V0KGI6LCAnY29udGV4dF9sdWEnLCBnZXQoZzosICdjb250ZXh0X2x1YScsIDEpKQorICBzeW4gaW5jbHVkZSBAbHVhVG9wICAgICAgICAgIHN5bnRheC9sdWEudmltCisgIHVubGV0IGI6Y3VycmVudF9zeW50YXgKIAotY2FsbCBzOmluY2x1ZGVfc3ludGF4KCdjJywgJ0MnKQotY2FsbCBzOmluY2x1ZGVfc3ludGF4KCdydWJ5JywgJ1J1YnknKQotY2FsbCBzOmluY2x1ZGVfc3ludGF4KCdqYXZhc2NyaXB0JywgJ0pTJykKLWNhbGwgczppbmNsdWRlX3N5bnRheCgneG1sJywgJ1hNTCcpCisgIHN5biByZWdpb24gIGNvbnRleHRMdWFDb2RlICAgIG1hdGNoZ3JvdXA9Y29udGV4dEJsb2NrRGVsaW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBzdGFydD0nXFxzdGFydGx1YWNvZGVcPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBlbmQ9J1xcc3RvcGx1YWNvZGVcPicga2VlcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIGNvbnRhaW5zPUBsdWFUb3AsQE5vU3BlbGwKIAotc3luIG1hdGNoICAgY29udGV4dFNlY3Rpb25pbmcgJ1xcY2hhcHRlclw+JyBjb250YWlucz1ATm9TcGVsbAotc3luIG1hdGNoICAgY29udGV4dFNlY3Rpb25pbmcgJ1xcXCUoc3ViXCkqc2VjdGlvblw+JyBjb250YWlucz1ATm9TcGVsbAorICBzeW4gbWF0Y2ggICBjb250ZXh0RGlyZWN0THVhICAiXFxcJShkaXJlY3RsdWFcfGN0eGx1YVwpXD5cJShccyolLiokXClcPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBuZXh0Z3JvdXA9Y29udGV4dEJlZ2luRW5kTHVhIHNraXB3aGl0ZSBza2lwZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBjb250YWlucz1pbml0ZXhDb21tZW50CisgIHN5biByZWdpb24gIGNvbnRleHRCZWdpbkVuZEx1YSBtYXRjaGdyb3VwPWNvbnRleHRTcGVjaWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgc3RhcnQ9InsiIGVuZD0ifSIgc2tpcD0iXFxbe31dIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIGNvbnRhaW5lZCBjb250YWlucz1AbHVhVG9wLEBOb1NwZWxsCitlbmRpZgorCitmb3Igc3lubmFtZSBpbiBrZXlzKHM6Y29udGV4dF9pbmNsdWRlKQorICBleGVjdXRlICdzeW4gaW5jbHVkZSBAJyAuIHN5bm5hbWUgLiAnVG9wJyAnc3ludGF4LycgLiBzeW5uYW1lIC4gJy52aW0nCisgIHVubGV0IGI6Y3VycmVudF9zeW50YXgKKyAgZXhlY3V0ZSAnc3luIHJlZ2lvbiBjb250ZXh0JyAuIHM6Y29udGV4dF9pbmNsdWRlW3N5bm5hbWVdIC4gJ0NvZGUnCisgICAgICAgIFwgJ21hdGNoZ3JvdXA9Y29udGV4dEJsb2NrRGVsaW0nCisgICAgICAgIFwgJ3N0YXJ0PStcXHN0YXJ0JyAuIHM6Y29udGV4dF9pbmNsdWRlW3N5bm5hbWVdIC4gJysnCisgICAgICAgIFwgJ2VuZD0rXFxzdG9wJyAuIHM6Y29udGV4dF9pbmNsdWRlW3N5bm5hbWVdIC4gJysnCisgICAgICAgIFwgJ2NvbnRhaW5zPUAnIC4gc3lubmFtZSAuICdUb3AsQE5vU3BlbGwnCitlbmRmb3IKKworc3luIG1hdGNoICAgY29udGV4dFNlY3Rpb25pbmcgJ1xcXCUoc3RhcnRcfHN0b3BcKVw9XCUoXCUoc3ViXCkqc2VjdGlvblx8XCUoc3ViXCkqc3ViamVjdFx8Y2hhcHRlclx8cGFydFx8Y29tcG9uZW50XHxwcm9kdWN0XHx0aXRsZVwpXD4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIGNvbnRhaW5zPUBOb1NwZWxsCiAKIHN5biBtYXRjaCAgIGNvbnRleHRTcGVjaWFsICAgICdcXGNybGZcPlx8XFxwYXJcPlx8LVx7MiwzfVx8fFs8Pi9dXD18JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBjb250YWlucz1ATm9TcGVsbApAQCAtOTIsMTUgKzEyMSwxOSBAQAogc3luIG1hdGNoICAgY29udGV4dEZvbnQgICAgICAgJ1xcXCUodGZcfGJbc2ldXHxzW2NsXVx8b3NcKVwlKHh4XHxbeGFiY2RdXClcPVw+JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBjb250YWlucz1ATm9TcGVsbAogCitoaSBkZWYgbGluayBjb250ZXh0T3B0aW9ucyAgICBUeXBlZGVmCitoaSBkZWYgbGluayBjb250ZXh0Q29tbWVudCAgICBDb21tZW50CiBoaSBkZWYgbGluayBjb250ZXh0QmxvY2tEZWxpbSBLZXl3b3JkCiBoaSBkZWYgbGluayBjb250ZXh0QnVpbHRpbiAgICBLZXl3b3JkCiBoaSBkZWYgbGluayBjb250ZXh0RGVsaW1pdGVyICBEZWxpbWl0ZXIKK2hpIGRlZiBsaW5rIGNvbnRleHRFc2NhcGVkICAgIFN0cmluZwogaGkgZGVmIGxpbmsgY29udGV4dFByZVByb2MgICAgUHJlUHJvYwogaGkgZGVmIGxpbmsgY29udGV4dFNlY3Rpb25pbmcgUHJlUHJvYwogaGkgZGVmIGxpbmsgY29udGV4dFNwZWNpYWwgICAgU3BlY2lhbAogaGkgZGVmIGxpbmsgY29udGV4dFR5cGUgICAgICAgVHlwZQogaGkgZGVmIGxpbmsgY29udGV4dFN0eWxlICAgICAgY29udGV4dFR5cGUKIGhpIGRlZiBsaW5rIGNvbnRleHRGb250ICAgICAgIGNvbnRleHRUeXBlCitoaSBkZWYgbGluayBjb250ZXh0RGlyZWN0THVhICBLZXl3b3JkCiAKIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gImNvbnRleHQiCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L21wLnZpbSBiL3J1bnRpbWUvc3ludGF4L21wLnZpbQppbmRleCA5NTcyM2QwLi5hOGZhMzZmIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9tcC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvbXAudmltCkBAIC0yLDcgKzIsNyBAQAogIiBMYW5ndWFnZTogICAgICAgICAgIE1ldGFQb3N0CiAiIE1haW50YWluZXI6ICAgICAgICAgTmljb2xhIFZpdGFjb2xvbm5hIDxudml0YWNvbG9ubmFAZ21haWwuY29tPgogIiBGb3JtZXIgTWFpbnRhaW5lcnM6IEFuZHJlYXMgU2NoZXJlciA8YW5kcmVhcy5zY2hlcmVyQHBvYm94LmNvbT4KLSIgTGFzdCBDaGFuZ2U6ICAgICAgICAyMDE2IE9jdCAwMQorIiBMYXN0IENoYW5nZTogICAgICAgIDIwMTYgT2N0IDE0CiAKIGlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCiAgIGZpbmlzaApAQCAtMjMzLDcgKzIzMywxMCBAQAogZW5kaWYKIAogIiBVcCB0byBkYXRlIGFzIG9mIDIzLVNlcC0yMDE2LgotaWYgZ2V0KGc6LCAibXBfbWV0YWZ1bl9tYWNyb3MiLCAwKQoraWYgZ2V0KGI6LCAnbXBfbWV0YWZ1bl9tYWNyb3MnLCBnZXQoZzosICdtcF9tZXRhZnVuX21hY3JvcycsIDApKQorICAiIEhpZ2hsaWdodCBUZVgga2V5d29yZHMgKGZvciB1c2UgaW4gQ29uVGVYdCBkb2N1bWVudHMpCisgIHN5biBtYXRjaCAgIG1wVGVYS2V5d29yZCAgJ1xcW2EtekEtWkBdXCsnCisKICAgIiBUaGVzZSBrZXl3b3JkcyBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkuCiAgIHN5biBrZXl3b3JkIG1wUHJpbWl0aXZlIHJ1bnNjcmlwdAogCkBAIC03NTYsNiArNzU5LDcgQEAKIGhpIGRlZiBsaW5rIG1wQ29uc3RhbnQgICAgIG1mQ29uc3RhbnQKIGhpIGRlZiBsaW5rIG1wT25PZmYgICAgICAgIG1wUHJpbWl0aXZlCiBoaSBkZWYgbGluayBtcERhc2ggICAgICAgICBtcFByaW1pdGl2ZQoraGkgZGVmIGxpbmsgbXBUZVhLZXl3b3JkICAgSWRlbnRpZmllcgogCiBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJtcCIKIAo=