gASVAQABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwabW9kdWxlLWV0aGVyZXVtLnBhcmlzLnNwZWOUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMWy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vcGFyaXMvc3BlYy9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjBttb2R1bGU7IGV0aGVyZXVtLnBhcmlzLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29udGVudHOUhZSBlH2UKGgFaAZoIGhQaCFo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gZR9lChoBVgsBAAACgoKCmFwcGx5X2ZvcmsKClRyYW5zZm9ybXMgdGhlIHN0YXRlIGZyb20gdGhlIHByZXZpb3VzIGhhcmQgZm9yayAob2xkKSBpbnRvIHRoZSBibG9jawoKZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcwoKT2J0YWluIHRoZSBsaXN0IG9mIGhhc2hlcyBvZiB0aGUgcHJldmlvdXMgMjU2IGJsb2NrcyBpbiBvcmRlciBvZgoKc3RhdGVfdHJhbnNpdGlvbgoKQXR0ZW1wdHMgdG8gYXBwbHkgYSBibG9jayB0byBhbiBleGlzdGluZyBibG9jayBjaGFpbi4KCnZhbGlkYXRlX2hlYWRlcgoKVmVyaWZpZXMgYSBibG9jayBoZWFkZXIuCgphcHBseV9ib2R5CgpFeGVjdXRlcyBhIGJsb2NrLgoKcHJvY2Vzc190cmFuc2FjdGlvbgoKRXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LgoKdmFsaWRhdGVfdHJhbnNhY3Rpb24KClZlcmlmaWVzIGEgdHJhbnNhY3Rpb24uCgpjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QKCkNhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLgoKcmVjb3Zlcl9zZW5kZXIKCkV4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24uCgpzaWduaW5nX2hhc2hfcHJlMTU1CgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiBhIGxlZ2FjeSAocHJlIEVJUCAxNTUpIHNpZ25hdHVyZS4KCnNpZ25pbmdfaGFzaF8xNTUKCkNvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIGEgRUlQIDE1NSBzaWduYXR1cmUuCgpzaWduaW5nX2hhc2hfMjkzMAoKQ29tcHV0ZSB0aGUgaGFzaCBvZiBhIHRyYW5zYWN0aW9uIHVzZWQgaW4gYSBFSVAgMjkzMCBzaWduYXR1cmUuCgpzaWduaW5nX2hhc2hfMTU1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PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqwgQAACmBlH2UKGgFasUHAABoB12UaD+MGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSFlIGUfZQoaAVoBmggasoHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrOBAAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcasEEAABoHU5oH05oIGrHBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCxldGhlcmV1bS5wYXJpcy5zcGVjLmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSMCHJlZnRpdGxllIwsZXRoZXJldW0ucGFyaXMuc3BlYy5jYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUdWgcaG1oHU5oH05oIGrDBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MbC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vcGFyaXMvc3BlYy9pbmRleC5yc3Q6NTM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqwAcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqtQQAAGgdTmgfTmggar0HAAB1Ymq2BAAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UaAddlGg/jD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGr0BwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MbC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vcGFyaXMvc3BlYy9pbmRleC5yc3Q6NTM6PGF1dG9zdW1tYXJ5PpRoH0sB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b25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQgaGFzaC4KICAgIG1vc3RfcmVjZW50X2Jsb2NrX2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUaAddlGg/WN8CAABkZWYgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbjogQmxvY2tDaGFpbikgLT4gTGlzdFtIYXNoMzJdOgogICAgcmVjZW50X2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdGVzdGVkIHJpZ29yb3VzbHkKICAgIGlmIGxlbihyZWNlbnRfYmxvY2tzKSA9PSAwOgogICAgICAgIHJldHVybiBbXQoKICAgIHJlY2VudF9ibG9ja19oYXNoZXMgPSBbXQoKICAgIGZvciBibG9jayBpbiByZWNlbnRfYmxvY2tzOgogICAgICAgIHByZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQg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bmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBqDxQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0vnaCBqDBQAAHViaGkpgZR9lChoBVgxAQAAQWxsIHBhcnRzIG9mIHRoZSBibG9jaydzIGNvbnRlbnRzIG5lZWQgdG8gYmUgdmVyaWZpZWQgYmVmb3JlIGJlaW5nIGFkZGVkCnRvIHRoZSBjaGFpbi4gQmxvY2tzIGFyZSB2ZXJpZmllZCBieSBlbnN1cmluZyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUKYmxvY2sgbWFrZSBsb2dpY2FsIHNlbnNlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgYmxvY2suIFRoZQppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sncyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UaAddlGg/WDUBAABBbGwgcGFydHMgb2YgdGhlIGJsb2Nr4oCZcyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2Nr4oCZcyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UhZSBlH2UKGgFaAZoIGodFAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfS+loIGoMFAAAdWJoaSmBlH2UKGgFjPxUbyBpbXBsZW1lbnQgRXRoZXJldW0sIGluIHRoZW9yeSBjbGllbnRzIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHN0b3JlIHRo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KGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMRAABoHU5oH05oIGoMFAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrBDAAAaB1oHmgfTmggarATAAB1YmVoDn2UKGgQXZRoE12UKGoFFAAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UagUUAACMB29ianR5cGWUatYUAACMCGRlc2N0eXBllGrWFAAAjAdub2luZGV4lIl1aBxqkwwAAGgdaERoH0sAaCBqlBMAAGghaAN1YmrYDAAAKYGUfZQoaAVYygQAAGRlZiBzdGF0ZV90cmFuc2l0aW9uKGNoYWluOiBCbG9ja0NoYWluLCBibG9jazogQmxvY2spIC0+IE5vbmU6CiAgICBwYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWy0xXS5oZWFkZXIKICAgIHZhbGlkYXRlX2hlYWRlcihibG9jay5oZWFkZXIsIHBhcmVudF9oZWFkZXIpCiAgICBlbnN1cmUoYmxvY2sub21tZXJzID09ICgpLCBJbnZhbGlkQmxvY2spCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuYmFzZV9mZWVfcGVyX2dhcywKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLnByZXZfcmFuZGFvLAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBjaGFpbi5jaGFpbl9pZCwKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBjaGFpbi5ibG9ja3MuYXBwZW5kKGJsb2NrKQogICAgaWYgbGVuKGNoYWluLmJsb2NrcykgPiAyNTU6CiAgICAgICAgIyBSZWFsIGNsaWVudHMgaGF2ZSB0byBzdG9yZSBtb3JlIGJsb2NrcyB0byBkZWFsIHdpdGggcmVvcmdzLCBidXQgdGhlCiAgICAgICAgIyBwcm90b2NvbCBvbmx5IHJlcXVpcmVzIHRoZSBsYXN0IDI1NQogICAgICAgIGNoYWluLmJsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KlGgHXZQoaD9YPwEAAGRlZiBzdGF0ZV90cmFuc2l0aW9uKGNoYWluOiBCbG9ja0NoYWluLCBibG9jazogQmxvY2spIC0+IE5vbmU6CiAgICBwYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWy0xXS5oZWFkZXIKICAgIHZhbGlkYXRlX2hlYWRlcihibG9jay5oZWFkZXIsIHBhcmVudF9oZWFkZXIpCiAgICBlbnN1cmUoYmxvY2sub21tZXJzID09ICgpLCBJbnZhbGlkQmxvY2spCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICCUhZSBlH2UKGgFaAZoIGreFAAAaCFoA2gdaERoH0sAdWJqRA8AACmBlH2UKGgFaAZoB12UaD+MFndpdGhkcmF3YWxzX3Jvb3QsCiAgICCUhZSBlH2UKGgFaAZoIGrmFAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwMY2hhbmdlLWFkZGVklGFoFV2UaBddlGgZXZR1aBxqQw8AAGggat4UAABoIWgDaB1oRGgfSwB1Ymg/WEwBAAApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuYmFzZV9mZWVfcGVyX2dhcywKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLnByZXZfcmFuZGFvLAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBjaGFpbi5jaGFpbl9pZCwKICAgIJSFlIGUfZQoaAVoBmggat4UAABoIWgDaB1oRGgfSwB1YmpEDwAAKYGUfZQoaAVoBmgHXZRoP4wXYmxvY2sud2l0aGRyYXdhbHMsCiAgICCUhZSBlH2UKGgFaAZoIGr4FAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwMY2hhbmdlLWFkZGVklGFoFV2UaBddlGgZXZR1aBxqQw8AAGggat4UAABoIWgDaB1oRGgfSwB1Ymg/WF0BAAApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAglIWUgZR9lChoBWgGaCBq3hQAAGghaANoHWhEaB9LAHViakQPAAApgZR9lChoBWgGaAddlGg/jE1lbnN1cmUod2l0aGRyYXdhbHNfcm9vdCA9PSBibG9jay5oZWFkZXIud2l0aGRyYXdhbHNfcm9vdCwgSW52YWxpZEJsb2NrKQoKICAgIJSFlIGUfZQoaAVoBmggagoVAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBq3hQAAGghaANoHWhEaB9LAHViaD+M4mNoYWluLmJsb2Nrcy5hcHBlbmQoYmxvY2spCiAgICBpZiBsZW4oY2hhaW4uYmxvY2tzKSA+IDI1NToKICAgICAgICAjIFJlYWwgY2xpZW50cyBoYXZlIHRvIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGRlYWwgd2l0aCByZW9yZ3MsIGJ1dCB0aGUKICAgICAgICAjIHByb3RvY29sIG9ubHkgcmVxdWlyZXMgdGhlIGxhc3QgMjU1CiAgICAgICAgY2hhaW4uYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQqUhZSBlH2UKGgFaAZoIGreFAAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxML2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vcGFyaXMvc3BlYy5weZSMCXhtbDpzcGFjZZRqTAQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrvDAAASwFzjAdsaW5lbm9zlIl1aBxq1wwAAGgdaB5oH0v6aCBqlBMAAGghaAN1YmVoDn2UKGgQXZRqYAIA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aBxoXmgdTmgfTmggavEVAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcai0RAABoHU5oH05oIGrgFQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoYEQAAaB1OaB9OaCBq3RUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqExEAAGgdTmgfTmggaqoVAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcasEMAABoHWgeaB9OaCBqThUAAHViZWgOfZQoaBBdlGgTXZQoaqMVAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqoxUAAIwHb2JqdHlwZZRqaBYAAIwIZGVzY3R5cGWUamgWAACMB25vaW5kZXiUiXVoHGqTDAAAaB1OaB9OaCBqMhUAAHViatgMAAApgZR9lChoBVhXCAAAZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgcGFyZW50X2dhc19saW1pdCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0CiAgICBwYXJlbnRfZ2FzX3RhcmdldCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0IC8vIEVMQVNUSUNJVFlfTVVMVElQTElFUgogICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgPSBwYXJlbnRfaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMKCiAgICBwYXJlbnRfZ2FzX3VzZWQgPSBwYXJlbnRfaGVhZGVyLmdhc191c2VkCgogICAgZW5zdXJlKGhlYWRlci5nYXNfdXNlZCA8PSBoZWFkZXIuZ2FzX2xpbWl0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKCiAgICAjIGNoZWNrIGlmIHRoZSBiYXNlIGZlZSBpcyBjb3JyZWN0CiAgICBpZiBwYXJlbnRfZ2FzX3VzZWQgPT0gcGFyZW50X2dhc190YXJnZXQ6CiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzCiAgICBlbGlmIHBhcmVudF9nYXNfdXNlZCA+IHBhcmVudF9nYXNfdGFyZ2V0OgogICAgICAgIGdhc191c2VkX2RlbHRhID0gcGFyZW50X2dhc191c2VkIC0gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgcGFyZW50X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAqIGdhc191c2VkX2RlbHRhCiAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfZmVlX2dhc19kZWx0YSAvLyBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhID0gbWF4KAogICAgICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSAvLyBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SLAogICAgICAgICAgICAxLAogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKyBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQogICAgZWxzZToKICAgICAgICBnYXNfdXNlZF9kZWx0YSA9IHBhcmVudF9nYXNfdGFyZ2V0IC0gcGFyZW50X2dhc191c2VkCgogICAgICAgIHBhcmVudF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKiBnYXNfdXNlZF9kZWx0YQogICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2ZlZV9nYXNfZGVsdGEgLy8gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgYmFzZV9mZWVfcGVyX2dhc19kZWx0YSA9ICgKICAgICAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgLy8gQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUgogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQoKICAgIGVuc3VyZShleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID09IGhlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2spCgogICAgZW5zdXJlKGhlYWRlci50aW1lc3RhbXAgPiBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGhlYWRlci5udW1iZXIgPT0gcGFyZW50X2hlYWRlci5udW1iZXIgKyAxLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUobGVuKGhlYWRlci5leHRyYV9kYXRhKSA8PSAzMiwgSW52YWxpZEJsb2NrKQoKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSAwLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm5vbmNlID09IGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm9tbWVyc19oYXNoID09IEVNUFRZX09NTUVSX0hBU0gsIEludmFsaWRCbG9jaykKCiAgICBibG9ja19wYXJlbnRfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHBhcmVudF9oZWFkZXIpKQogICAgZW5zdXJlKGhlYWRlci5wYXJlbnRfaGFzaCA9PSBibG9ja19wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGg/WFcIAABkZWYgdmFsaWRhdGVfaGVhZGVyKGhlYWRlcjogSGVhZGVyLCBwYXJlbnRfaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBwYXJlbnRfZ2FzX2xpbWl0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQKICAgIHBhcmVudF9nYXNfdGFyZ2V0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQgLy8gRUxBU1RJQ0lUWV9NVUxUSVBMSUVSCiAgICBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyA9IHBhcmVudF9oZWFkZXIuYmFzZV9mZWVfcGVyX2dhcwoKICAgIHBhcmVudF9nYXNfdXNlZCA9IHBhcmVudF9oZWFkZXIuZ2FzX3VzZWQKCiAgICBlbnN1cmUoaGVhZGVyLmdhc191c2VkIDw9IGhlYWRlci5nYXNfbGltaXQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBjaGVja19nYXNfbGltaXQoaGVhZGVyLmdhc19saW1pdCwgcGFyZW50X2dhc19saW1pdCksCiAgICAgICAgSW52YWxpZEJsb2NrLAogICAgKQoKICAgICMgY2hlY2sgaWYgdGhlIGJhc2UgZmVlIGlzIGNvcnJlY3QKICAgIGlmIHBhcmVudF9nYXNfdXNlZCA9PSBwYXJlbnRfZ2FzX3RhcmdldDoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMKICAgIGVsaWYgcGFyZW50X2dhc191c2VkID4gcGFyZW50X2dhc190YXJnZXQ6CiAgICAgICAgZ2FzX3VzZWRfZGVsdGEgPSBwYXJlbnRfZ2FzX3VzZWQgLSBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBwYXJlbnRfZmVlX2dhc19kZWx0YSA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzICogZ2FzX3VzZWRfZGVsdGEKICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSA9IHBhcmVudF9mZWVfZ2FzX2RlbHRhIC8vIHBhcmVudF9nYXNfdGFyZ2V0CgogICAgICAgIGJhc2VfZmVlX3Blcl9nYXNfZGVsdGEgPSBtYXgoCiAgICAgICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhIC8vIEJBU0VfRkVFX01BWF9DSEFOR0VfREVOT01JTkFUT1IsCiAgICAgICAgICAgIDEsCiAgICAgICAgKQoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gKAogICAgICAgICAgICBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyArIGJhc2VfZmVlX3Blcl9nYXNfZGVsdGEKICAgICAgICApCiAgICBlbHNlOgogICAgICAgIGdhc191c2VkX2RlbHRhID0gcGFyZW50X2dhc190YXJnZXQgLSBwYXJlbnRfZ2FzX3VzZWQKCiAgICAgICAgcGFyZW50X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAqIGdhc191c2VkX2RlbHRhCiAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfZmVlX2dhc19kZWx0YSAvLyBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhID0gKAogICAgICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSAvLyBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SCiAgICAgICAgKQoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gKAogICAgICAgICAgICBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAtIGJhc2VfZmVlX3Blcl9nYXNfZGVsdGEKICAgICAgICApCgogICAgZW5zdXJlKGV4cGVjdGVkX2Jhc2VfZmVlX3Blcl9nYXMgPT0gaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jaykKCiAgICBlbnN1cmUoaGVhZGVyLnRpbWVzdGFtcCA+IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm51bWJlciA9PSBwYXJlbnRfaGVhZGVyLm51bWJlciArIDEsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShsZW4oaGVhZGVyLmV4dHJhX2RhdGEpIDw9IDMyLCBJbnZhbGlkQmxvY2spCgogICAgZW5zdXJlKGhlYWRlci5kaWZmaWN1bHR5ID09IDAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubm9uY2UgPT0gYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIub21tZXJzX2hhc2ggPT0gRU1QVFlfT01NRVJfSEFTSCwgSW52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eJSJdWgcapMMAABoHWhEaB9LAGggao4WAABoIWgDdWJq2AwAACmBlH2UKGgFWBYLAABkZWYgYXBwbHlfYm9keSgKICAgIHN0YXRlOiBTdGF0ZSwKICAgIGJsb2NrX2hhc2hlczogTGlzdFtIYXNoMzJdLAogICAgY29pbmJhc2U6IEFkZHJlc3MsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBiYXNlX2ZlZV9wZXJfZ2FzOiBVaW50LAogICAgYmxvY2tfZ2FzX2xpbWl0OiBVaW50LAogICAgYmxvY2tfdGltZTogVTI1NiwKICAgIHByZXZfcmFuZGFvOiBCeXRlczMyLAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtVbmlvbltMZWdhY3lUcmFuc2FjdGlvbiwgQnl0ZXNdLCAuLi5dLAogICAgY2hhaW5faWQ6IFVpbnQ2NCwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbCiAgICAgICAgQnl0ZXMsIE9wdGlvbmFsW1VuaW9uW0J5dGVzLCBMZWdhY3lUcmFuc2FjdGlvbl1dCiAgICBdID0gVHJpZShzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUpCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtVbmlvbltCeXRlcywgUmVjZWlwdF1dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUobWFwKGRlY29kZV90cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25zKSk6CiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCBlbmNvZGVfdHJhbnNhY3Rpb24odHgpCiAgICAgICAgKQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgPj0gdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQoKICAgICAgICAgICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBtaW4oCiAgICAgICAgICAgICAgICB0eC5tYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICApCiAgICAgICAgICAgIGVmZmVjdGl2ZV9nYXNfcHJpY2UgPSBwcmlvcml0eV9mZWVfcGVyX2dhcyArIGJhc2VfZmVlX3Blcl9nYXMKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnN1cmUodHguZ2FzX3ByaWNlID49IGJhc2VfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jaykKICAgICAgICAgICAgZWZmZWN0aXZlX2dhc19wcmljZSA9IHR4Lmdhc19wcmljZQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzPWJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgIGdhc19wcmljZT1lZmZlY3RpdmVfZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIHByZXZfcmFuZGFvPXByZXZfcmFuZGFvLAogICAgICAgICAgICBzdGF0ZT1zdGF0ZSwKICAgICAgICAgICAgY2hhaW5faWQ9Y2hhaW5faWQsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncywgaGFzX2VycmVkID0gcHJvY2Vzc190cmFuc2FjdGlvbihlbnYsIHR4KQogICAgICAgIGdhc19hdmFpbGFibGUgLT0gZ2FzX3VzZWQKCiAgICAgICAgcmVjZWlwdDogVW5pb25bQnl0ZXMsIFJlY2VpcHRdID0gUmVjZWlwdCgKICAgICAgICAgICAgc3VjY2VlZGVkPW5vdCBoYXNfZXJyZWQsCiAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgKQoKICAgICAgICBpZiBpc2luc3RhbmNlKHR4LCBBY2Nlc3NMaXN0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAxIiArIHJscC5lbmNvZGUocmVjZWlwdCkKICAgICAgICBpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgICAgIHJlY2VpcHQgPSBiIlx4MDIiICsgcmxwLmVuY29kZShyZWNlaXB0KQoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgcmVjZWlwdCwKICAgICAgICApCgogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIGdhc19yZW1haW5pbmcgPSBibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlCgogICAg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KSwgZW5jb2RlX3RyYW5zYWN0aW9uKHR4KQogICAgICAgICkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSByZWNvdmVyX3NlbmRlcihjaGFpbl9pZCwgdHgpCgogICAgICAgIGlmIGlzaW5zdGFuY2UodHgsIEZlZU1hcmtldFRyYW5zYWN0aW9uKToKICAgICAgICAgICAgZW5zdXJlKAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzID49IHR4Lm1heF9wcmlvcml0eV9mZWVfcGVyX2dhcywgSW52YWxpZEJsb2NrCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIHByaW9yaXR5X2ZlZV9wZXJfZ2FzID0gbWluKAogICAgICAgICAgICAgICAgdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzIC0gYmFzZV9mZWVfcGVyX2dhcywKICAgICAgICAgICAgKQogICAgICAgICAgICBlZmZlY3RpdmVfZ2FzX3ByaWNlID0gcHJpb3JpdHlfZmVlX3Blcl9nYXMgKyBiYXNlX2ZlZV9wZXJfZ2FzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5zdXJlKHR4Lmdhc19wcmljZSA+PSBiYXNlX2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2spCiAgICAgICAgICAgIGVmZmVjdGl2ZV9nYXNfcHJpY2UgPSB0eC5nYXNfcHJpY2UKCiAgICAgICAgZW52ID0gdm0uRW52aXJvbm1lbnQoCiAgICAgICAgICAgIGNhbGxlcj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgb3JpZ2luPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBibG9ja19oYXNoZXM9YmxvY2tfaGFzaGVzLAogICAgICAgICAgICBjb2luYmFzZT1jb2luYmFzZSwKICAgICAgICAgICAgbnVtYmVyPWJsb2NrX251bWJlciwKICAgICAgICAgICAgZ2FzX2xpbWl0PWJsb2NrX2dhc19saW1pdCwKICAgICAgICAgICAgYmFzZV9mZWVfcGVyX2dhcz1iYXNlX2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICBnYXNfcHJpY2U9ZWZmZWN0aXZlX2dhc19wcmljZSwKICAgICAgICAgICAgdGltZT1ibG9ja190aW1lLAogICAgICAgICAgICBwcmV2X3JhbmRhbz1wcmV2X3JhbmRhbywKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgICAgIGNoYWluX2lkPWNoYWluX2lkLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MsIGhhc19lcnJlZCA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHJlY2VpcHQ6IFVuaW9uW0J5dGVzLCBSZWNlaXB0XSA9IFJlY2VpcHQoCiAgICAgICAgICAgIHN1Y2NlZWRlZD1ub3QgaGFzX2VycmVkLAogICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICAgICAgcmVjZWlwdCA9IGIiXHgwMSIgKyBybHAuZW5jb2RlKHJlY2VpcHQpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAyIiArIHJscC5lbmNvZGUocmVjZWlwdCkKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIHJlY2VpcHQsCiAgICAgICAgKQoKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAg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bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulGgHXZRoP1hdAQAAVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGFjdGlvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVy4oCZcyBhY2NvdW50IGFmdGVyIGNhbGN1bGF0aW5nIHRoZSBnYXMgZmVlIGFuZApyZWZ1bmRzIHRoZW0gdGhlIHByb3BlciBhbW91bnQgYWZ0ZXIgZXhlY3V0aW9uLiBDYWxsaW5nIGNvbnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcgbm9uY2VzIGFyZSBhbGwgZXhhbXBsZXMgb2YgYWN0aW9ucyB0aGF0CmhhcHBlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbiBvciBmcm9tIGEgY2FsbCBtYWRlIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLpSFlIGUfZQoaAVoBmgganscAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NTQFoIGpqHAAAdWJoaSmBlH2UKGgFjFJBY2NvdW50cyB0aGF0IGFyZSBtYXJrZWQgZm9yIGRlbGV0aW9uIGFyZSBwcm9jZXNzZWQgYW5kIGRlc3Ryb3llZCBhZnRlcgpleGVjdXRpb24ulGgHXZRoP4xSQWNjb3VudHMgdGhhdCBhcmUgbWFya2VkIGZvciBkZWxldGlvbiBhcmUgcHJvY2Vzc2VkIGFuZCBkZXN0cm95ZWQgYWZ0ZXIKZXhlY3V0aW9uLpSFlIGUfZQoaAVoBmggaokcAABoIWgDaB1o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IGVuc3VyZShzZW5kZXJfYWNjb3VudC5ub25jZSA9PSB0eC5ub25jZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgPj0gZ2FzX2ZlZSArIHR4LnZhbHVlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuY29kZSA9PSBieXRlYXJyYXkoKSwgSW52YWxpZEJsb2NrKQoKICAgIGVmZmVjdGl2ZV9nYXNfZmVlID0gdHguZ2FzICogZW52Lmdhc19wcmljZQoKICAgIGdhcyA9IHR4LmdhcyAtIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkKICAgIGluY3JlbWVudF9ub25jZShlbnYuc3RhdGUsIHNlbmRlcikKCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGVmZmVjdGl2ZV9nYXNfZmVlCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlKQoKICAgIHByZWFjY2Vzc2VkX2FkZHJlc3NlcyA9IHNldCgpCiAgICBwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXMgPSBzZXQoKQogICAgaWYgaXNpbnN0YW5jZSh0eCwgKEFjY2Vzc0xpc3RUcmFuc2FjdGlvbiwgRmVlTWFya2V0VHJhbnNhY3Rpb24pKToKICAgICAgICBmb3IgKGFkZHJlc3MsIGtleXMpIGluIHR4LmFjY2Vzc19saXN0OgogICAgICAgICAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMuYWRkKGFkZHJlc3MpCiAgICAgICAgICAgIGZvciBrZXkgaW4ga2V5czoKICAgICAgICAgICAgICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cy5hZGQoKGFkZHJlc3MsIGtleSkpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgICAgIHByZWFjY2Vzc2VkX2FkZHJlc3Nlcz1mcm96ZW5zZXQocHJlYWNjZXNzZWRfYWRkcmVzc2VzKSwKICAgICAgICBwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXM9ZnJvemVuc2V0KHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cyksCiAgICApCgogICAgb3V0cHV0ID0gcHJvY2Vzc19tZXNzYWdlX2NhbGwobWVzc2FnZSwgZW52KQoKICAgIGdhc191c2VkID0gdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0CiAgICBnYXNfcmVmdW5kID0gbWluKGdhc191c2VkIC8vIDUsIG91dHB1dC5yZWZ1bmRfY291bnRlcikKICAgIGdhc19yZWZ1bmRfYW1vdW50ID0gKG91dHB1dC5nYXNfbGVmdCArIGdhc19yZWZ1bmQpICogZW52Lmdhc19wcmljZQoKICAgICMgRm9yIG5vbi0xNTU5IHRyYW5zYWN0aW9ucyBlbnYuZ2FzX3ByaWNlID09IHR4Lmdhc19wcmljZQogICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBlbnYuZ2FzX3ByaWNlIC0gZW52LmJhc2VfZmVlX3Blcl9nYXMKICAgIHRyYW5zYWN0aW9uX2ZlZSA9ICgKICAgICAgICB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQgLSBnYXNfcmVmdW5kCiAgICApICogcHJpb3JpdHlfZmVlX3Blcl9nYXMKCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgaWYgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlICE9IDA6CiAgICAgICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICAgICAgZW52LnN0YXRlLCBlbnYuY29pbmJhc2UsIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZQogICAgICAgICkKICAgIGVsaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC50b3VjaGVkX2FjY291bnRzOgogICAgICAgIGlmIGFjY291bnRfZXhpc3RzX2FuZF9pc19lbXB0eShlbnYuc3RhdGUsIGFkZHJlc3MpOgogICAgICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MsIG91dHB1dC5oYXNfZXJyZWQKlGgHXZQoaD9Y7wMAAGRlZiBwcm9jZXNzX3RyYW5zYWN0aW9uKAogICAgZW52OiB2bS5FbnZpcm9ubWVudCwgdHg6IFRyYW5zYWN0aW9uCikgLT4gVHVwbGVbVTI1NiwgVHVwbGVbTG9nLCAuLi5dLCBib29sXToKICAgIGVuc3VyZSh2YWxpZGF0ZV90cmFuc2FjdGlvbih0eCksIEludmFsaWRCbG9jaykKCiAgICBzZW5kZXIgPSBlbnYub3JpZ2luCiAgICBzZW5kZXJfYWNjb3VudCA9IGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKQoKICAgIGlmIGlzaW5zdGFuY2UodHgsIEZlZU1hcmtldFRyYW5zYWN0aW9uKToKICAgICAgICBnYXNfZmVlID0gdHguZ2FzICogdHgubWF4X2ZlZV9wZXJfZ2FzCiAgICBlbHNlOgogICAgICAgIGdhc19mZWUgPSB0eC5nYXMgKiB0eC5nYXNfcHJpY2UKCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBlZmZlY3RpdmVfZ2FzX2ZlZSA9IHR4LmdhcyAqIGVudi5nYXNfcHJpY2UKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCgogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSA9IHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgLSBlZmZlY3RpdmVfZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMgPSBzZXQoKQogICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzID0gc2V0KCkKICAgIGlmIGlzaW5zdGFuY2UodHgsIChBY2Nlc3NMaXN0VHJhbnNhY3Rpb24sIEZlZU1hcmtldFRyYW5zYWN0aW9uKSk6CiAgICAgICAglIWUgZR9lChoBWgGaCBqzB0AAGghaANoHWhEaB9LAHViakQPAAApgZR9lChoBWgGaAddlGg/jDBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMuYWRkKGVudi5jb2luYmFzZSkKICAgICAgICCUhZSBlH2UKGgFaAZoIGrUHQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwMY2hhbmdlLWFkZGVklGFoFV2UaBddlGgZXZR1aBxqQw8AAGggaswdAABoIWgDaB1oRGgfSwB1Ymg/WDYHAABmb3IgKGFkZHJlc3MsIGtleXMpIGluIHR4LmFjY2Vzc19saXN0OgogICAgICAgICAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMuYWRkKGFkZHJlc3MpCiAgICAgICAgICAgIGZvciBrZXkgaW4ga2V5czoKICAgICAgICAgICAgICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cy5hZGQoKGFkZHJlc3MsIGtleSkpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgICAgIHByZWFjY2Vzc2VkX2FkZHJlc3Nlcz1mcm96ZW5zZXQocHJlYWNjZXNzZWRfYWRkcmVzc2VzKSwKICAgICAgICBwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXM9ZnJvemVuc2V0KHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cyksCiAgICApCgogICAgb3V0cHV0ID0gcHJvY2Vzc19tZXNzYWdlX2NhbGwobWVzc2FnZSwgZW52KQoKICAgIGdhc191c2VkID0gdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0CiAgICBnYXNfcmVmdW5kID0gbWluKGdhc191c2VkIC8vIDUsIG91dHB1dC5yZWZ1bmRfY291bnRlcikKICAgIGdhc19yZWZ1bmRfYW1vdW50ID0gKG91dHB1dC5nYXNfbGVmdCArIGdhc19yZWZ1bmQpICogZW52Lmdhc19wcmljZQoKICAgICMgRm9yIG5vbi0xNTU5IHRyYW5zYWN0aW9ucyBlbnYuZ2FzX3ByaWNlID09IHR4Lmdhc19wcmljZQogICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBlbnYuZ2FzX3ByaWNlIC0gZW52LmJhc2VfZmVlX3Blcl9nYXMKICAgIHRyYW5zYWN0aW9uX2ZlZSA9ICgKICAgICAgICB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQgLSBnYXNfcmVmdW5kCiAgICApICogcHJpb3JpdHlfZmVlX3Blcl9nYXMKCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgaWYgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlICE9IDA6CiAgICAgICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICAgICAgZW52LnN0YXRlLCBlbnYuY29pbmJhc2UsIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZQogICAgICAgICkKICAgIGVsaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC50b3VjaGVkX2FjY291bnRzOgogICAgICAgIGlmIGFj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ZCBpdCB3aWxsIGJlIGRlY2xhcmVkIGludmFsaWQulGgHXZRoP4zOVGhlIGdhcyBpbiBhIHRyYW5zYWN0aW9uIGdldHMgdXNlZCB0byBwYXkgZm9yIHRoZSBpbnRyaW5zaWMgY29zdCBvZgpvcGVyYXRpb25zLCB0aGVyZWZvcmUgaWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGdhcyB0aGVuIGl0IHdvdWxkIG5vdApiZSBwb3NzaWJsZSB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24gYW5kIGl0IHdpbGwgYmUgZGVjbGFyZWQgaW52YWxpZC6UhZSBlH2UKGgFaAZoIGptHgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTWwBaCBqXB4AAHViaGkpgZR9lChoBVihAQAAQWRkaXRpb25hbGx5LCB0aGUgbm9uY2Ugb2YgYSB0cmFuc2FjdGlvbiBtdXN0IG5vdCBlcXVhbCBvciBleGNlZWQgdGhlCmxpbWl0IGRlZmluZWQgaW4gYEVJUC0yNjgxIDxodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTI2ODE+YF8uCkluIHByYWN0aWNlLCBkZWZpbmluZyB0aGUgbGltaXQgYXMgYGAyKio2NC0xYGAgaGFzIG5vIGltcGFjdCBiZWNhdXNlCnNlbmRpbmcgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIGltcHJvYmFibGUuIEl0J3Mgbm90IHN0cmljdGx5CmltcG9zc2libGUgdGhvdWdoLCBgYDIqKjY0LTFgYCB0cmFuc2FjdGlvbnMgaXMgdGhlIGVudGlyZSBjYXBhY2l0eSBvZiB0aGUKRXRoZXJldW0gYmxvY2tjaGFpbiBhdCAyMDIyIGdhcyBsaW1pdHMgZm9yIGEgbGl0dGxlIG92ZXIgMjIgeWVhcnMulGgHXZQoaD+MV0FkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIJSFlIGUfZQoaAVoBmgganseAABoIWgDaB1oRGgfSwB1YmhuKYGUfZQoaAWMNWBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBflGgHXZRoP4wIRUlQLTI2ODGUhZSBlH2UKGgFaAZoIGqDHgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwEbmFtZZSMCEVJUC0yNjgxlIwGcmVmdXJplIwnaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxlHVoHGhtaB1OaB9OaCBqex4AAHViaAopgZR9lChoBYwqIDxodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTI2ODE+lGgHXZRoDn2UKGgQXZSMCGVpcC0yNjgxlGFoE12UaBVdlIwIZWlwLTI2ODGUYWgXXZRoGV2UjAZyZWZ1cmmUapQeAAB1aBxoCWgdTmgfTmgganseAAB1Ymg/jCUuCkluIHByYWN0aWNlLCBkZWZpbmluZyB0aGUgbGltaXQgYXMglIWUgZR9lChoBWgGaCBqex4AAGghaANoHWhEaB9LAHViasIEAAApgZR9lChoBYwLYGAyKio2NC0xYGCUaAddlGg/jAcyKio2NC0xlIWUgZR9lChoBWgGaCBqph4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqwQQAAGgdTmgfTmgganseAAB1Ymg/jB8gaGFzIG5vIGltcGFjdCBiZWNhdXNlCnNlbmRpbmcglIWUgZR9lChoBWgGaCBqex4AAGghaANoHWhEaB9LAHViasIEAAApgZR9lChoBYwLYGAyKio2NC0xYGCUaAddlGg/jAcyKio2NC0xlIWUgZR9lChoBWgGaCBquB4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqwQQAAGgdTmgfTmgganseAAB1Ymg/jEQgdHJhbnNhY3Rpb25zIGlzIGltcHJvYmFibGUuIEl04oCZcyBub3Qgc3RyaWN0bHkKaW1wb3NzaWJsZSB0aG91Z2gsIJSFlIGUfZQoaAVoBmgganseAABoIWgDaB1oRGgfSwB1YmrCBAAAKYGUfZQoaAWMC2BgMioqNjQtMWBglGgHXZRoP4wHMioqNjQtMZSFlIGUfZQoaAVoBmggasoeAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcasEEAABoHU5oH05oIGp7HgAAdWJoP4xuIHRyYW5zYWN0aW9ucyBpcyB0aGUgZW50aXJlIGNhcGFjaXR5IG9mIHRoZQpFdGhlcmV1bSBibG9ja2NoYWluIGF0IDIwMjIgZ2FzIGxpbWl0cyBmb3IgYSBsaXR0bGUgb3ZlciAyMiB5ZWFycy6UhZSBlH2UKGgFaAZoIGp7HgAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTXABaCBqXB4AAHViahQRAAApgZR9lChoBWgGaAddlChqGREAACmBlH2UKGgFaAZoB12UKGoeEQAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/jApQYXJhbWV0ZXJzlIWUgZR9lChoBWgGaCBq6B4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHREAAGgdaB5oH0sAaCBq5R4AAHViai4RAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMHnR4IC0tIFRyYW5zYWN0aW9uIHRvIHZhbGlkYXRlLpRoB12UKGo3EQAAKYGUfZQoaAWMAnR4lGgHXZRoP4wCdHiUhZSBlH2UKGgFaAZoIGr9HgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGq+DAAAjAhweTpjbGFzc5ROdWgcajYRAABoHU5oH05oIGr5HgAAdWJoP4wdIOKAkyBUcmFuc2FjdGlvbiB0byB2YWxpZGF0ZS6UhZSBlH2UKGgFaAZoIGr5HgAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBq9h4AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqLREAAGgdTmgfTmggauUeAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahgRAABoHU5oH05oIGriHgAAdWJqGREAACmBlH2UKGgFaAZoB12UKGoeEQAAKYGUfZQoaAWMB1JldHVybnOUaAddlGg/jAdSZXR1cm5zlIWUgZR9lChoBWgGaCBqJx8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHREAAGgdaB5oH0sAaCBqJB8AAHViai4RAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMSHZlcmlmaWVkIC0tIFRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBleGVjdXRlZCwgb3IgRmFsc2Ugb3RoZXJ3aXNlLpRoB12UKGp4EQAAKYGUfZQoaAWMDCoqdmVyaWZpZWQqKpRoB12UaD+MCHZlcmlmaWVklIWUgZR9lChoBWgGaCBqPB8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqdxEAAGgdTmgfTmggajgfAAB1Ymg/jEEg4oCTIFRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBleGVjdXRlZCwgb3IgRmFsc2Ugb3RoZXJ3aXNlLpSFlIGUfZQoaAVoBmggajgfAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGo1HwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGotEQAAaB1OaB9OaCBqJB8AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqGBEAAGgdTmgfTmggauIeAAB1YmoZEQAAKYGUfZQoaAVoBmgHXZQoah4RAAApgZR9lChoBYwLUmV0dXJuIHR5cGWUaAddlGg/jAtSZXR1cm4gdHlwZZSFlIGUfZQoaAVoBmggamMfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcah0RAABoHWgeaB9LAGggamAfAAB1YmouEQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjARib29slGgHXZRqqwUAACmBlH2UKGgFjAZgYm9vbGCUaAddlGg/jARib29slIWUgZR9lChoBWgGaCBqeB8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqqgUAAGgdTmgfTmgganQfAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpxHwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGotEQAAaB1OaB9OaCBqYB8AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqGBEAAGgdTmgfTmggauIeAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMRAABoHU5oH05oIGpcHgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrBDAAAaB1oHmgfTmggahgeAAB1YmVoDn2UKGgQXZRoE12UKGpVHgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UalUeAACMB29ianR5cGWUaqcfAACMCGRlc2N0eXBllGqnHwAAjAdub2luZGV4lIl1aBxqkwwAAGgdaERoH0sAaCBq/B0AAGghaAN1YmrYDAAAKYGUfZQoaAWMfmRlZiB2YWxpZGF0ZV90cmFuc2FjdGlvbih0eDogVHJhbnNhY3Rpb24pIC0+IGJvb2w6CiAgICByZXR1cm4gY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KSA8PSB0eC5nYXMgYW5kIHR4Lm5vbmNlIDwgMioqNjQgLSAxCpRoB12UKGg/jDdkZWYgdmFsaWRhdGVfdHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKSAtPiBib29sOgogICAglIWUgZR9lChoBWgGaCBqrx8AAGghaANoHWhEaB9LAHViakQPAAApgZR9lChoBWgGaAddlGg/jDJpZiBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpID4gdHguZ2FzOgogICAgICAgIJSFlIGUfZQoaAVoBmggarcfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBqrx8AAGghaANoHWhEaB9LAHViaD+MB3JldHVybiCUhZSBlH2UKGgFaAZoIGqvHwAAaCFoA2gdaERoH0sAdWJqRA8AACmBlH2UKGgFaAZoB12UaD+MJmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkgPD0gdHguZ2FzlIWUgZR9lChoBWgGaCBqyR8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMD2NoYW5nZS1yZXBsYWNlZJRhaBVdlGgXXZRoGV2UdWgcakMPAABoIGqvHwAAaCFoA2gdaERoH0sAdWJqRA8AACmBlH2UKGgFaAZoB12UaD+MVEZhbHNlCiAgICBpZiB0eC5ub25jZSA+PSAyKio2NCAtIDE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiB0eC50byA9PSBCeXRlczAoYiIiKZSFlIGUfZQoaAVoBmggatcfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjBJjaGFuZ2UtcmVwbGFjZW1lbnSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBqrx8AAGghaANoHWhEaB9LAHViaD+MBSBhbmQglIWUgZR9lChoBWgGaCBqrx8AAGghaANoHWhEaB9LAHViakQPAAApgZR9lChoBWgGaAddlGg/jBR0eC5ub25jZSA8IDIqKjY0IC0gMZSFlIGUfZQoaAVoBmggaukfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjA9jaGFuZ2UtcmVwbGFjZWSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBqrx8AAGghaANoHWhEaB9LAHViakQPAAApgZR9lChoBWgGaAddlGg/jEdsZW4odHguZGF0YSkgPiAyICogTUFYX0NPREVfU0laRToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZZSFlIGUfZQoaAVoBmggavcfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjBJjaGFuZ2UtcmVwbGFjZW1lbnSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBqrx8AAGghaANoHWhEaB9LAHViaD+MAQqUhZSBlH2UKGgFaAZoIGqvHwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxML2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vcGFyaXMvc3BlYy5weZSMCXhtbDpzcGFjZZRqTAQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrvDAAASwFzjAdsaW5lbm9zlIl1aBxq1wwAAGgdaB5oH01/AWggavwdAABoIWgDdWJlaA59lChoEF2UaugCAABhaBNdlGgVXZSMFHZhbGlkYXRlX3RyYW5zYWN0aW9ulGFoF12UaBldlHVoHGgzaB1oHmgfTWQBaCBqYgwAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwYY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lGgHXZRoP4wYY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lIWUgZR9lChoBWgGaCBqIiAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH02EAWggah8gAABoIWgDdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1oRGgfSwBoIGofIAAAaCFoA3ViapQMAAApgZR9lChoBWgGaAddlChqmQwAACmBlH2UKGgFjBxjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgplGgHXZQoap8MAAApgZR9lChoBYwYY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lGgHXZRoP4wYY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lIWUgZR9lChoBWgGaCBqQiAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoaqoMAABqqwwAAGqsDAAAaq0MAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUakwEAAB1aBxqngwAAGgdaB5oH05oIGo+IAAAdWJqkBAAACmBlH2UKGgFjAJ0eJRoB12UapYQAAApgZR9lChoBYwCdHiUaAddlGpEDwAAKYGUfZQoaAVoBmgHXZRoP4wCdHiUhZSBlH2UKGgFaAZoIGpZIAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGqlEAAAYWgVXZRoF12UaBldlHVoHGpDDwAAaB1OaB9OaCBqVSAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqTAQAAHVoHGqVEAAAaB1OaB9OaCBqUSAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqTAQAAHVoHGqPEAAAaB1oHmgfTmggaj4gAAB1YmVoDn2UKGgQXZSMLGV0aGVyZXVtLnBhcmlzLnNwZWMuY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lGFoE12UKGq1DAAAarYMAACMAnB5lGq4DAAAarkMAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUar4MAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqRCAAAHVoHGqYDAAAaB1oHmgfTYcBaCBqOyAAAHViasIMAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UaAddlGg/jD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGqCIAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTYoBaCBqfyAAAHViaGkpgZR9lChoBVgRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaGFzCmJlZ3VuLiBGdW5jdGlvbnMvb3BlcmF0aW9ucyBpbiB0aGUgRVZNIGNvc3QgbW9uZXkgdG8gZXhlY3V0ZSBzbyB0aGlzCmludHJpbnNpYyBjb3N0IGlzIGZvciB0aGUgb3BlcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcGFpZCBmb3IgYXMgcGFydCBvZgp0aGUgdHJhbnNhY3Rpb24uIERhdGEgdHJhbnNmZXIsIGZvciBleGFtcGxlLCBpcyBwYXJ0IG9mIHRoaXMgaW50cmluc2ljCmNvc3QuIEl0IGNvc3RzIGV0aGVyIHRvIHNlbmQgZGF0YSBvdmVyIHRoZSB3aXJlIGFuZCB0aGF0IGV0aGVyIGlzCmFjY291bnRlZCBmb3IgaW4gdGhlIGludHJpbnNpYyBjb3N0IGNhbGN1bGF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gVGhpcwppbnRyaW5zaWMgY29zdCBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHBhaWQgZm9yIGJlZm9yZSBleGVjdXRpb24gaW4gb3JkZXIKZm9yIGFsbCBvcGVyYXRpb25zIHRvIGJlIGltcGxlbWVudGVkLpRoB12UaD9YEQIAAFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGhhcwpiZWd1bi4gRnVuY3Rpb25zL29wZXJhdGlvbnMgaW4gdGhlIEVWTSBjb3N0IG1vbmV5IHRvIGV4ZWN1dGUgc28gdGhpcwppbnRyaW5zaWMgY29zdCBpcyBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBhaWQgZm9yIGFzIHBhcnQgb2YKdGhlIHRyYW5zYWN0aW9uLiBEYXRhIHRyYW5zZmVyLCBmb3IgZXhhbXBsZSwgaXMgcGFydCBvZiB0aGlzIGludHJpbnNpYwpjb3N0LiBJdCBjb3N0cyBldGhlciB0byBzZW5kIGRhdGEgb3ZlciB0aGUgd2lyZSBhbmQgdGhhdCBldGhlciBpcwphY2NvdW50ZWQgZm9yIGluIHRoZSBpbnRyaW5zaWMgY29zdCBjYWxjdWxhdGVkIGluIHRoaXMgZnVuY3Rpb24uIFRoaXMKaW50cmluc2ljIGNvc3QgbXVzdCBiZSBjYWxjdWxhdGVkIGFuZCBwYWlkIGZvciBiZWZvcmUgZXhlY3V0aW9uIGluIG9yZGVyCmZvciBhbGwgb3BlcmF0aW9ucyB0byBiZSBpbXBsZW1lbnRlZC6UhZSBlH2UKGgFaAZoIGqQIAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTYwBaCBqfyAAAHViahQRAAApgZR9lChoBWgGaAddlChqGREAACmBlH2UKGgFaAZoB12UKGoeEQAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/jApQYXJhbWV0ZXJzlIWUgZR9lChoBWgGaCBqpCAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq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ah8gAABoIWgDdWJq2AwAACmBlH2UKGgFWLICAABkZWYgY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4OiBUcmFuc2FjdGlvbikgLT4gVWludDoKICAgIGRhdGFfY29zdCA9IDAKCiAgICBmb3IgYnl0ZSBpbiB0eC5kYXRhOgogICAgICAgIGlmIGJ5dGUgPT0gMDoKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfWkVSTwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX05PTl9aRVJPCgogICAgaWYgdHgudG8gPT0gQnl0ZXMwKGIiIik6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSBUWF9DUkVBVEVfQ09TVAogICAgZWxzZToKICAgICAgICBjcmVhdGVfY29zdCA9IDAKCiAgICBhY2Nlc3NfbGlzdF9jb3N0ID0gMAogICAgaWYgaXNpbnN0YW5jZSh0eCwgKEFjY2Vzc0xpc3RUcmFuc2FjdGlvbiwgRmVlTWFya2V0VHJhbnNhY3Rpb24pKToKICAgICAgICBmb3IgKF9hZGRyZXNzLCBrZXlzKSBpbiB0eC5hY2Nlc3NfbGlzdDoKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCArPSBUWF9BQ0NFU1NfTElTVF9BRERSRVNTX0NPU1QKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCArPSBsZW4oa2V5cykgKiBUWF9BQ0NFU1NfTElTVF9TVE9SQUdFX0tFWV9DT1NUCgogICAgcmV0dXJuIFVpbnQoVFhfQkFTRV9DT1NUICsgZGF0YV9jb3N0ICsgY3JlYXRlX2Nvc3QgKyBhY2Nlc3NfbGlzdF9jb3N0KQqUaAddlChoP1gwAQAAZGVmIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eDogVHJhbnNhY3Rpb24pIC0+IFVpbnQ6CiAgICBkYXRhX2Nvc3QgPSAwCgogICAgZm9yIGJ5dGUgaW4gdHguZGF0YToKICAgICAgICBpZiBieXRlID09IDA6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX1pFUk8KICAgICAgICBlbHNlOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9OT05fWkVSTwoKICAgIGlmIHR4LnRvID09IEJ5dGVzMChiIiIpOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gVFhfQ1JFQVRFX0NPU1QKICAgIJSFlIGUfZQoaAVoBmggamshAABoIWgDaB1oRGgfSwB1YmpEDwAAKYGUfZQoaAVoBmgHXZRoP4wuKyBpbnQoaW5pdF9jb2RlX2Nvc3QoVWludChsZW4odHguZGF0YSkpKSkKICAgIJSFlIGUfZQoaAVoBmgganMhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGpDDwAAaCBqayEAAGghaANoHWhEaB9LAHViaD9YggEAAGVsc2U6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSAwCgogICAgYWNjZXNzX2xpc3RfY29zdCA9IDAKICAgIGlmIGlzaW5zdGFuY2UodHgsIChBY2Nlc3NMaXN0VHJhbnNhY3Rpb24sIEZlZU1hcmtldFRyYW5zYWN0aW9uKSk6CiAgICAgICAgZm9yIChfYWRkcmVzcywga2V5cykgaW4gdHguYWNjZXNzX2xpc3Q6CiAgICAgICAgICAgIGFjY2Vzc19saXN0X2Nvc3QgKz0gVFhfQUNDRVNTX0xJU1RfQUREUkVTU19DT1NUCiAgICAgICAgICAgIGFjY2Vzc19saXN0X2Nvc3QgKz0gbGVuKGtleXMpICogVFhfQUNDRVNTX0xJU1RfU1RPUkFHRV9LRVlfQ09TVAoKICAgIHJldHVybiBVaW50KFRYX0JBU0VfQ09TVCArIGRhdGFfY29zdCArIGNyZWF0ZV9jb3N0ICsgYWNjZXNzX2xpc3RfY29zdCkKlIWUgZR9lChoBWgGaCBqayEAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMTC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL3BhcmlzL3NwZWMucHmUjAl4bWw6c3BhY2WUakwEAACM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PCBTRUNQMjU2SzFOLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHMgYW5kIHMgPD0gU0VDUDI1NksxTiAvLyAyLCBJbnZhbGlkQmxvY2spCgogICAgaWYgaXNpbnN0YW5jZSh0eCwgTGVnYWN5VHJhbnNhY3Rpb24pOgogICAgICAgIGlmIHYgPT0gMjcgb3IgdiA9PSAyODoKICAgICAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKAogICAgICAgICAgICAgICAgciwgcywgdiAtIDI3LCBzaWduaW5nX2hhc2hfcHJlMTU1KHR4KQogICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5zdXJlKAogICAgICAgICAgICAgICAgdiA9PSAzNSArIGNoYWluX2lkICogMiBvciB2ID09IDM2ICsgY2hhaW5faWQgKiAyLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQogICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIoCiAgICAgICAgICAgICAgICByLCBzLCB2IC0gMzUgLSBjaGFpbl9pZCAqIDIsIHNpZ25pbmdfaGFzaF8xNTUodHgpCiAgICAgICAgICAgICkKICAgIGVsaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIociwgcywgdiwgc2lnbmluZ19oYXNoXzI5MzAodHgpKQogICAgZWxpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKHIsIHMsIHYsIHNpZ25pbmdfaGFzaF8xNTU5KHR4KSkKCiAgICByZXR1cm4gQWRkcmVzcyhrZWNjYWsyNTYocHVibGljX2tleSlbMTI6MzJdKQqUaAddlGg/WKIDAABkZWYgcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQ6IFVpbnQ2NCwgdHg6IFRyYW5zYWN0aW9uKSAtPiBBZGRyZXNzOgogICAgdiwgciwgcyA9IHR4LnYsIHR4LnIsIHR4LnMKCiAgICBlbnN1cmUoMCA8IHIgYW5kIHIgPCBTRUNQMjU2SzFOLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHMgYW5kIHMgPD0gU0VDUDI1NksxTiAvLyAyLCBJbnZhbGlkQmxvY2spCgogICAgaWYgaXNpbnN0YW5jZSh0eCwgTGVnYWN5VHJhbnNhY3Rpb24pOgogICAgICAgIGlmIHYgPT0gMjcgb3IgdiA9PSAyODoKICAgICAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKAogICAgICAgICAgICAgICAgciwgcywgdiAtIDI3LCBzaWduaW5nX2hhc2hfcHJlMTU1KHR4KQogICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5zdXJlKAogICAgICAgICAgICAgICAgdiA9PSAzNSArIGNoYWluX2lkICogMiBvciB2ID09IDM2ICsgY2hhaW5faWQgKiAyLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQogICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIoCiAgICAgICAgICAgICAgICByLCBzLCB2IC0gMzUgLSBjaGFpbl9pZCAqIDIsIHNpZ25pbmdfaGFzaF8xNTUodHgpCiAgICAgICAgICAgICkKICAgIGVsaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIociwgcywgdiwgc2lnbmluZ19oYXNoXzI5MzAodHgpKQogICAgZWxpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKHIsIHMsIHYsIHNpZ25pbmdfaGFzaF8xNTU5KHR4KSkKCiAgICByZXR1cm4gQWRkcmVzcyhrZWNjYWsyNTYocHVibGljX2tleSlbMTI6MzJdKQqUhZSBlH2UKGgFaAZoIGpvIwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgV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lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrBDAAAaB1oHmgfTmggagUlAAB1YmVoDn2UKGgQXZRoE12UKGpCJQAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UakIlAACMB29ianR5cGWUah8mAACMCGRlc2N0eXBllGofJgAAjAdub2luZGV4lIl1aBxqkwwAAGgdTmgfTmggaukkAAB1YmrYDAAAKYGUfZQoaAVYcgEAAGRlZiBzaWduaW5nX2hhc2hfMTU1KHR4OiBMZWdhY3lUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgVWludCgxKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUaAddlGg/WHIBAABkZWYgc2lnbmluZ19oYXNoXzE1NSh0eDogTGVnYWN5VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgICAgIFVpbnQoMSksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICAgICAg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ICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1h7AQAAZGVmIHNpZ25pbmdfaGFzaF8yOTMwKHR4OiBBY2Nlc3NMaXN0VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgYiJceDAxIgogICAgICAgICsgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHguY2hhaW5faWQsCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgdHguYWNjZXNzX2xpc3QsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggaoMnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjEwvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9wYXJpcy9zcGVjLnB5lIwJeG1sOnNwYWNllGpMBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uau8MAABLAXOMB2xpbmVub3OUiXVoHGrXDAAAaB1oHmgfTfgBaCBqRSYAAHViZWgOfZQoaBBdlGqSAwAAYWgTXZRoFV2UjBFzaWduaW5nX2hhc2hf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AGgdTmgfTmggaqQoAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGqhKAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGotEQAAaB1OaB9OaCBqkCgAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqGBEAAGgdTmgfTmggahIoAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMRAABoHU5oH05oIGoBKAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrBDAAAaB1oHmgfTmggar0nAAB1YmVoDn2UKGgQXZRoE12UKGr6JwAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UavonAACMB29ianR5cGWUatcoAACMCGRlc2N0eXBllGrXKAAAjAdub2luZGV4lIl1aBxqkwwAAGgdTmgfTmggaqEnAAB1YmrYDAAAKYGUfZQoaAVYrQEAAGRlZiBzaWduaW5nX2hhc2hfMTU1OSh0eDogRmVlTWFya2V0VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgYiJceDAyIgogICAgICAgICsgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHguY2hhaW5faWQsCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lm1heF9wcmlvcml0eV9mZWVfcGVyX2dhcywKICAgICAgICAgICAgICAgIHR4Lm1heF9mZWVfcGVyX2dhcywKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgdHguYWNjZXNzX2xpc3QsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaD9YrQEAAGRlZiBzaWduaW5nX2hhc2hfMTU1OSh0eDogRmVlTWFya2V0VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgYiJceDAyIgogICAgICAgICsgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHguY2hhaW5faWQsCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lm1heF9wcmlvcml0eV9mZWVfcGVyX2dhcywKICAgICAgICAgICAgICAgIHR4Lm1heF9mZWVfcGVyX2dhcywKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgdHguYWNjZXNzX2xpc3QsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggat8oAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjEwvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9wYXJpcy9zcGVjLnB5lIwJeG1sOnNwYWNllGpMBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uau8MAABLAXOMB2xpbmVub3OUiXVoHGrXDAAAaB1oHmgfTQ0CaCBqoScAAHViZWgOfZQoaBBdlGq0AwAAYWgTXZRoFV2UjBFzaWduaW5nX2hhc2hfMTU1OZRhaBddlGgZXZR1aBxoM2gdaB5oH039AWggamIMAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWME2NvbXB1dGVfaGVhZGVyX2hhc2iUaAddlGg/jBNjb21wdXRlX2hlYWRlcl9oYXNolIWUgZR9lChoBWgGaCBqACkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH00SAmggav0oAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGr9KAAAdWJqlAwAACmBlH2UKGgFaAZoB12UKGqZDAAAKYGUfZQoaAWMG2NvbXB1dGVfaGVhZGVyX2hhc2goaGVhZGVyKZRoB12UKGqfDAAAKYGUfZQoaAWME2NvbXB1dGVfaGVhZGVyX2hhc2iUaAddlGg/jBNjb21wdXRlX2hlYWRlcl9oYXNolIWUgZR9lChoBWgGaCBqICkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoaqoMAABqqwwAAGqsDAAAaq0MAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUakwEAAB1aBxqngwAAGgdaB5oH05oIGocKQAAdWJqkBAAACmBlH2UKGgFjAZoZWFkZXKUaAddlGqWEAAAKYGUfZQoaAWMBmhlYWRlcpRoB12UakQPAAApgZR9lChoBWgGaAddlGg/jAZoZWFkZXKUhZSBlH2UKGgFaAZoIGo3KQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGqlEAAAYWgVXZRoF12UaBldlHVoHGpDDwAAaB1OaB9OaCBqMykAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqTAQAAHVoHGqVEAAAaB1OaB9OaCBqLykAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqTAQAAHVoHGqPEAAAaB1oHmgfTmggahwpAAB1YmVoDn2UKGgQXZSMJ2V0aGVyZXVtLnBhcmlzLnNwZWMuY29tcHV0ZV9oZWFkZXJfaGFzaJRhaBNdlChqtQwAAGq2DAAAjAJweZRquAwAAGq5DAAAZWgVXZRoF12UaBldlIwGbW9kdWxllGq+DAAAjAVjbGFzc5RoBowIZnVsbG5hbWWUaiIpAAB1aBxqmAwAAGgdaB5oH00VAmggahkpAAB1YmrCDAAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwkQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIulGgHXZRoP4wkQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIulIWUgZR9lChoBWgGaCBqYCkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH00YAmggal0pAAB1YmhpKYGUfZQoaAWMjVRoZSBoZWFkZXIgaGFzaCBvZiBhIGJsb2NrIGlzIHRoZSBjYW5vbmljYWwgaGFzaCB0aGF0IGlzIHVzZWQgdG8gcmVmZXIKdG8gYSBzcGVjaWZpYyBibG9jayBhbmQgY29tcGxldGVseSBkaXN0aW5ndWlzaGVzIGEgYmxvY2sgZnJvbSBhbm90aGVyLpRoB12UaD+MjVRoZSBoZWFkZXIgaGFzaCBvZiBhIGJsb2NrIGlzIHRoZSBjYW5vbmljYWwgaGFzaCB0aGF0IGlzIHVzZWQgdG8gcmVmZXIKdG8gYSBzcGVjaWZpYyBibG9jayBhbmQgY29tcGxldGVseSBkaXN0aW5ndWlzaGVzIGEgYmxvY2sgZnJvbSBhbm90aGVyLpSFlIGUfZQoaAVoBmggam4pAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NGgJoIGpdKQAAdWJoaSmBlH2UKGgFWDABAABgYGtlY2NhazI1NmBgIGlzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhIDI1NiBiaXQgaGFzaCBvZiBhbnkgaW5wdXQuCkl0IGFsc28gdGFrZXMgaW4gYW55IG51bWJlciBvZiBieXRlcyBhcyBhbiBpbnB1dCBhbmQgcHJvZHVjZXMgYSBzaW5nbGUKaGFzaCBmb3IgdGhlbS4gQSBoYXNoIGlzIGEgY29tcGxldGVseSB1bmlxdWUgb3V0cHV0IGZvciBhIHNpbmdsZSBpbnB1dC4KU28gYW4gaW5wdXQgY29ycmVzcG9uZHMgdG8gb25lIHVuaXF1ZSBoYXNoIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKdGhlIGlucHV0IGV4YWN0bHkulGgHXZQoasIEAAApgZR9lChoBYwNYGBrZWNjYWsyNTZgYJRoB12UaD+MCWtlY2NhazI1NpSFlIGUfZQoaAVoBmggaoApAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcasEEAABoHU5oH05oIGp8KQAAdWJoP1gjAQAAIGlzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhIDI1NiBiaXQgaGFzaCBvZiBhbnkgaW5wdXQuCkl0IGFsc28gdGFrZXMgaW4gYW55IG51bWJlciBvZiBieXRlcyBhcyBhbiBpbnB1dCBhbmQgcHJvZHVjZXMgYSBzaW5nbGUKaGFzaCBmb3IgdGhlbS4gQSBoYXNoIGlzIGEgY29tcGxldGVseSB1bmlxdWUgb3V0cHV0IGZvciBhIHNpbmdsZSBpbnB1dC4KU28gYW4gaW5wdXQgY29ycmVzcG9uZHMgdG8gb25lIHVuaXF1ZSBoYXNoIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKdGhlIGlucHV0IGV4YWN0bHkulIWUgZR9lChoBWgGaCBqfCkAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH00dAmggal0pAAB1YmhpKYGUfZQoaAVYKAIAAFByaW9yIHRvIHVzaW5nIHRoZSBgYGtlY2NhazI1NmBgIGhhc2ggZnVuY3Rpb24sIHRoZSBoZWFkZXIgbXVzdCBiZQplbmNvZGVkIHVzaW5nIHRoZSBSZWN1cnNpdmUtTGVuZ3RoIFByZWZpeC4gU2VlIDpyZWY6YHJscGAuClJMUCBlbmNvZGluZyB0aGUgaGVhZGVyIGNvbnZlcnRzIGl0IGludG8gYSBzcGFjZS1lZmZpY2llbnQgZm9ybWF0IHRoYXQKYWxsb3dzIGZvciBlYXN5IHRyYW5zZmVyIG9mIGRhdGEgYmV0d2VlbiBub2Rlcy4gVGhlIHB1cnBvc2Ugb2YgUkxQIGlzIHRvCmVuY29kZSBhcmJpdHJhcmlseSBuZXN0ZWQgYXJyYXlzIG9mIGJpbmFyeSBkYXRhLCBhbmQgUkxQIGlzIHRoZSBwcmltYXJ5CmVuY29kaW5nIG1ldGhvZCB1c2VkIHRvIHNlcmlhbGl6ZSBvYmplY3RzIGluIEV0aGVyZXVtJ3MgZXhlY3V0aW9uIGxheWVyLgpUaGUgb25seSBwdXJwb3NlIG9mIFJMUCBpcyB0byBlbmNvZGUgc3RydWN0dXJlOyBlbmNvZGluZyBzcGVjaWZpYyBkYXRhCnR5cGVzIChlLmcuIHN0cmluZ3MsIGZsb2F0cykgaXMg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ICBtYXhfYWRqdXN0bWVudF9kZWx0YSA9IHBhcmVudF9nYXNfbGltaXQgLy8gR0FTX0xJTUlUX0FESlVTVE1FTlRfRkFDVE9SCiAgICBpZiBnYXNfbGltaXQgPj0gcGFyZW50X2dhc19saW1pdCArIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDw9IHBhcmVudF9nYXNfbGltaXQgLSBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8IEdBU19MSU1JVF9NSU5JTVVNOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIHJldHVybiBUcnVlCpRoB12UaD9YgQEAAGRlZiBjaGVja19nYXNfbGltaXQoZ2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUhZSBlH2UKGgFaAZoIGrMLAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxML2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vcGFyaXMvc3BlYy5weZSMCXhtbDpzcGFjZZRqTAQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrvDAAASwFzjAdsaW5lbm9zlIl1aBxq1wwAAGgdaB5oH01VAmggasIqAAB1YmVoDn2UKGgQXZRq+AMAAGFoE12UaBVdlIwPY2hlY2tfZ2FzX2xpbWl0lGFoF12UaBldlHVoHGgzaB1oHmgfTTkCaCBqYgwAAGghaAN1YmVoDn2UKGgQXZRqMQEAAGFoE12UaBVdlIwObW9kdWxlIGRldGFpbHOUYWgXXZRoGV2UdWgcaDNoHWgeaB9LQ2ggaDVoIWgDdWJlaA59lChoEF2UjBZldGhlcmV1bS1zcGVjaWZpY2F0aW9ulGFoE12UaBVdlIwWZXRoZXJldW0gc3BlY2lmaWNhdGlvbpRhaBddlGgZXZR1aBxoM2gdaB5oH0sEaCBoA2ghaAN1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUaER1aBxoAYwOY3VycmVudF9zb3VyY2WUaESMDGN1cnJlbnRfbGluZZRLAIwIc2V0dGluZ3OUjBFkb2N1dGlscy5mcm9udGVuZJSMBlZhbHVlc5STlCmBlH2UKIwMcmVwb3J0X2xldmVslEsCjApoYWx0X2xldmVslEsEjBFleGl0X3N0YXR1c19sZXZlbJRLBYwFZGVidWeUTowOd2FybmluZ19zdHJlYW2UTowJdHJhY2ViYWNrlE6MD291dHB1dF9lbmNvZGluZ5SMBXV0Zi04lIwdb3V0cHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBF4bWxjaGFycmVmcmVwbGFjZZSMDmVycm9yX2VuY29kaW5nlIwFdXRmLTiUjBxlcnJvcl9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwQYmFja3NsYXNocmVwbGFjZZSME3JlY29yZF9kZXBlbmRlbmNpZXOUjA5kb2N1dGlscy51dGlsc5SMDkRlcGVuZGVuY3lMaXN0lJOUKYGUfZQojARsaXN0lF2UjARmaWxllE51YowGY29uZmlnlE6MDWR1bXBfc2V0dGluZ3OUTowOZHVtcF9pbnRlcm5hbHOUTowPZHVtcF90cmFuc2Zvcm1zlE6MD2R1bXBfcHNldWRvX3htbJROjBBleHBvc2VfaW50ZXJuYWxzlE6MDnN0cmljdF92aXNpdG9ylE6MD19kaXNhYmxlX2NvbmZpZ5ROjAdfc291cmNllE6MDF9kZXN0aW5hdGlvbpSMLGRvYy9kaWZmcy9wYXJpc19zaGFuZ2hhaS9zcGVjL2luZGV4LnBpY2tsZTY0lIwNX2NvbmZpZ19maWxlc5RdlIwRbGluZV9sZW5ndGhfbGltaXSUTRAnjAl0YWJfd2lkdGiUSwiMEHN5bnRheF9oaWdobGlnaHSUjARsb25nlIwMc21hcnRfcXVvdGVzlImME3NtYXJ0cXVvdGVzX2xvY2FsZXOUTowdY2hhcmFjdGVyX2xldmVsX2lubGluZV9tYXJrdXCUiYwGd3JpdGVylIwDeG1slIwZY29tcGFyZV9zZWN0aW9uc19ieV9uYW1lc5RLAYwMZHVtcF9yc3RkaWZmlE6MBV9ib3RolH2UKGg4TowJZ2VuZXJhdG9ylE6MCWRhdGVzdGFtcJROjAtzb3VyY2VfbGlua5ROjApzb3VyY2VfdXJslE6MDXRvY19iYWNrbGlua3OUarUEAACMEmZvb3Rub3RlX2JhY2tsaW5rc5RLAYwNc2VjdG51bV94Zm9ybZRLAYwOZG9jdGl0bGVfeGZvcm2USwGMDWRvY2luZm9feGZvcm2USwGMEnNlY3RzdWJ0aXRsZV94Zm9ybZRLAIwOc3RyaXBfY29tbWVudHOUTowOaW5wdXRfZW5jb2RpbmeUTowcaW5wdXRfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMBnN0cmljdJSMDWxhbmd1YWdlX2NvZGWUjAJlbpSMDnBlcF9yZWZlcmVuY2VzlE6MDHBlcF9iYXNlX3VybJSMH2h0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy+UjBVwZXBfZmlsZV91cmxfdGVtcGxhdGWUjAhwZXAtJTA0ZJSMDnJmY19yZWZlcmVuY2VzlE6MDHJmY19iYXNlX3VybJSMG2h0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL5SMHXRyaW1fZm9vdG5vdGVfcmVmZXJlbmNlX3NwYWNllE6MFmZpbGVfaW5zZXJ0aW9uX2VuYWJsZWSUSwGMC3Jhd19lbmFibGVklEsBjA5hdXRvX2lkX3ByZWZpeJSMAmlklIwJaWRfcHJlZml4lGgGjBtzdHJpcF9lbGVtZW50c193aXRoX2NsYXNzZXOUTowNc3RyaXBfY2xhc3Nlc5ROdYwEYm90aJR9lIwKX29wdGlvbnNUb5SMBV9ib3RolIwLX29sZF9zb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzLy50b3gvZG9jcy9zdGFnZTBfb3V0L2F1dG9hcGkvlIwLX25ld19zb3VyY2WUjAlkb2MvZGlmZnOUakctAABqSC0AAIwWaWdub3JlX2luX3NlY3Rpb25fbmFtZZRdlCiMBXBhcmlzlIwIc2hhbmdoYWmUZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=