UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgYWx1ZXMgIFNFVCBPRiBBdHRyaWJ1dGVWYWx1ZQogICAgICAgICAgICAgICAgLS0gYXQgbGVhc3Qgb25lIHZhbHVlIGlzIHJlcXVpcmVkIC0tCn0KQXR0cmlidXRlVHlwZSAgICAgICAgICAgOjo9ICAgT0JKRUNUIElERU5USUZJRVIKQXR0cmlidXRlVmFsdWUgICAgICAgICAgOjo9ICAgQU5ZIERFRklORUQgQlkgdHlwZQpBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgICAgICAgICAgIDo6PSAgICAgU0VRVUVOQ0UgewogICAgICAgIHR5cGUgICAgQXR0cmlidXRlVHlwZSwKICAgICAgICB2YWx1ZSAgIEF0dHJpYnV0ZVZhbHVlIH0KaWQtYXQgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7am9pbnQtaXNvLWNjaXR0KDIpIGRzKDWLeykgNH0KaWQtYXQtaW5pdGlhbHMgICAgICAgICAgQXR0cmlidXRlVHlwZSA6Oj0geyBpZC1hdCA0MyB9Clg1MjBpbmlsdGFpcyA6Oj0gRGlyZWN0b3J5YmVyIDo6PSAgICAgUHJpbnRhYmxlU3RyaW5nCmlkLWF0LXRlbGVwaG9uZU51bWJlciAgICAgICBBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgMjB9Clg1MjB0ZWxlcGhvbmVOdW1iZXIgOjo9ICAgICBQcmludGFibGVTdHJpbmcKaWQtYXQtZmFjc2ltaWxlVGVsZXBob25lTnVtYmVyICAgICAgIEF0dHJpYnV0ZVR5cCB+IH5lICAgOjo9ICAgICB7aWQtYXQgMjN9Clg1MjBmYWNzaW1pbGVUZWxlcGhvbmVOdW1iZXIgOjo9ICAgICBQcmludGFibGVTdHJpbmcKaWQtYXQtcHNldWRvbnltCQlBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgNjV9Clg1MjBwc2V1ZG9ueW0gOjo9CURpcmVjdG9yeVN0cmluZwppZC1hdC1uYW1lCUF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCA0MX0KWDUyMG5hbWUgOjo9CURpcmVjdG9yeVN0cmluZwppZC1hdC1zdHJlZXRBZGRyZXNzCUF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCA5fQpYMDY4c3RyZWV0QWRkcmVzcyA6Oj0JRGlyZWN0b3J5U3RyaW5nCmlkLWF0LXBvc3RhbEFkZHJlc3MJQXR0cmlidXRlVHlwZQk6Oj0Je2lkLWF0IDE2fQpYNTIwcG9zdGFsQWRkcmVzcyA6Oj0gUG9zdGFsQWRkcmVzcwpQb3N0YWxBZGRyZXNzIDo6PSBTRVFVRU5DRSBPRiBEaXJlY3RvcnlTdHJpbmcKIC0tIExlZ2FjeSBhdHRyaWJ1dGVzCnBrY3MgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICB7IGlzbygxKSBtZW1iZXItYm9keSgyKSB1cyg4NDApIHJzYWRzaSgxMTM1NDkpIHBrY3MoMSkgfQpwa2NzLTkgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICB7IHBrY3MgOSB9CmVtYWlsQWRkcmVzcyBBdHRyaWJ1dGVUeXBlICQgICAgOjo9IHsgcGtjcy05IDEgfQpQa2NzOWVtYWlBNVN0cmluZyAoU0laRSAoMS4udWItZW1haWxhZGRyZXNzLWxlbmd0aCkpCk5hbWUgICAgICAgICAgICA6Oj0gICBDSE9JQ0UgeyAtLSBvbmx5IG9uZSBwb3NzaWJpbGl0eSBmb3Igbm93IC0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkblNlcXVlbmNlICBSRE5TZXF1ZW5jZSB9ClJETlNlcXVlbmNlICAgICA6Oj0gICBTRVFVRU5DRSBPRiBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lCkRpc3Rpbmd1aXNoZWROYW1lICAgICAgIDo6PSAgIFJETlNlcXVlbmNlClJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgIDo6PQogICAgICAgICAgICAgICAgICAgIFNFVCBTSVpFICgxIC4uIE1BWCkgT0YgQXR0cmlidXRlVHlwZUFuZFZhbHVlCkNlcnRpZmljYXRlICA6Oj0gIFNFUVVFTkNFICB7CiAgICAgdGJzQ2VydGlmaWNhdGUgICAgICAgVEJTQ2VydGlmaWNhdGUsCiAgICAgc2lnbmF0dXJlQWxnb3JpdGhtICAgQWxnb3JpdGhtSWRlbnRpZmllciAsCiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgQklUIFNUUklORyAgfQpUQlNDZXJ0aWZpY2F0ZSAgOjo9ICBTRVFVRU5DRSAgewogICAgIHZlcnNpb24gICAgICAgICBbMF0gIEVYUExJQ0lUIFZlcnNpb24gREVGQVVMVCB2MSwKICAgICBzZXJpYWxOdW1iZXIgICAgICAgICBDZXJ0aWZpY2F0ZVNlcmlhbE51bWJlciwKICAgICBzaWeIYXR1cmUgICAgICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyLAogICAgIGlzc3VlciAgICAgICAgICAgICAgIE5hbWUsCiAgICAgdmFsaWRpdHkgICAgICAgICAgICAgVmFsaWRpdHksCiAgICAgc3ViamVjdCAgICAgICAgICAgICAgTmFtZSwKUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSAgOjo9CiAgICAgICAgICAgICAgICAgICAgU0VUIFNJWkUgKDEgLi4gTUFYKSBPRiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUKQ2VydGlmaWNhdGUgIDo6PSAgU0VRVUVOQ0UgIHsKICAgICB0YnNDZXJ0aWZpY2F0ZSAgICAgICBUQlNDZXJ0aWZpY2F0ZSwKICAgICBzaWduYXR1cmVBbGdvcml0aG0gICBBbGdvcml0aG1JZGVudGlmaWVyICwKICAgICBzaWduYXR1cmUgICAgICAgICAgICBCSVQgU1RSSU5HICB9ClRCU0NlcnRpZmljYXRlICA6Oj0gIFNFUVVFTkNFICB7CiAgICAgdmVyc2lvbiAgICAgICAgIFswXSAgRVhQTElDSVQgVmVyc2lvbiBERUZBVUxUIHYxLAogICAgIHNlcmlhbE51bWJlciAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyLAogICAgIHNpZ4hhdHVyZSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAgICAgaXNzdWVyICAgICAgICAgICAgICAgTmFtZSwKICBJREVOVElGSUVSIDo6PQogICAgICAgeyBwa2NzIDkgfQplbWFpbEFkZHJlc3MgQXR0cmlidXRlVHlwZSAkICAgIDo6PSB7IHBrY3MtOSAxIH0KUGtjczllbWFpbCA6Oj0gSUE1U3RyaW5nIChTSVpFICgxLi51Yi1lbWFpbGFkZHJlc3MtbGVuZ3RoKSkKTmFtZSAgICAgICAgICAgIDo6PSAgIENIT0lDRSB7IC0tIG9ubHkgb25lIHBvc3NpYmlsaXR5IGZvciBub3cgLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRuU2VxdWVuY2UgIFJETlNlcXVlbmNlIH0KUkROU2VxdWVuY2UgICAgIDo6PSAgIFNFUVVFTkNFIE9GIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKRGlzdGluZ3Vpc2hlZE5hbWUgICAgICAgOjo9ICAgUkROU2VxdWVuY2UKUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSAgOjo9CiAgICAgICAgICAgICAgICAgICAgU0VUIFNJWkUgKDEgLi4gTUFYKSBPRiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUKQ2VydGlmaWNhdGUgIDo6PSAgU0VRVUVOQ0UgIHsKICAgICB0YnNDZXJ0aWZpY2F0ZSAgICAgICBUQlNDZXJ0aWZpY2F0ZSwKICAgICBzaWduYXR1cmVBbGdvcml0aG0gICBBbGdvcml0aG1JZGVudGlmaWVyICwKICAgICBzaWduYXR1cmUgICAgICAgICAgICBCSVQgU1RSSU5HICB9ClRCU0NlcnRpZmljYXRlICA6Oj0gIFNFUVVFTkNFICB7CiAgICAgdmVyc2lvbiAgICAgICAgIFswXSAgRVhQTElDSVQgVmVyc2lvbiBERUZBVUxUIHYxLAogICAgIHNlcmlhbE51bWJlciAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyLAogICAgIHNpZ4hhdHVyZSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAgICAgaXNzdWVyICAgICAgICAgICAgICAgTmFtZSwKICAgICB2YWxpZGl0eSAgICAgICAgICAgICBWYWxpZGl0eSwKICAgICBzdWJqZWN0ICAgICAgICAgICAgICBOYW1lLApSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lICA6Oj0KICAgICAgICAgICAgICAgICAgICBTRVQgU0laRSAoMSAuLiBNQVgpIE9GIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQpDZXJ0aWZpY2F0ZSAgOjo9ICBTRVFVRU5DRSAgewogICAgIHRic0NlcnRpZmljYXRlICAgICAgIFRCU0NlcnRpZmljYXRlLAogICAgIHNpZ25hdHVyZUFsZ29yaXRobSAgIEFsZ29yaXRobUlkZW50aWZpZXIgLAogICAgIHNpZ25hdHVyZSAgICAgICAgICAgIEJJVCBTVFJJTkcgIH0KVEJTQ2VydGlmaWNhdGUgIDo6PSAgU0VRVUVOQ0UgIHsKICAgICB2ZXJzaW9uICAgICAgICAgWzBdICBFWFBMSUNJVCBWZXJzaW9uIERFRkFVTFQgdjEsCiAgICAgc2VyaWFsTnVtYmVyICAgICAgICAgQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIsCiAgICAgc2lniGF0dXJlICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciwKICAgICBpc3N1ZXIgICAgICAgICAgICAgICBOYW1lLAogICAgIHZhbGlkaXR5ICAgICAgICAgICAgIFZhbGlkaXQseQogICAgIHN1YmplY3QgICAgICAgICAgICAgIE5hbWUsCiAgICAgc3ViamVjdFB1YmxpY0tleUluZm8gU3ViamVjdFB1YmxpY0tleUluZm8sCiAgICAgaXNzdWVyVW5pcXVlSUQgIFsxXSAgSU1QTElDSVQgVW5pcXVlSWRlbnRpZmllciBPUFRJT05BTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBJZiBwcmVzZW50LCB2ZXJzaW9uIHNoYWxsIGJlIHYyIG9yIHYzCiAgICAgc3ViamVjdFVuaXF1ZUlEIFsyXSAgSU1QTElDSVQgVW5pcXVlSWRlbnRpZmllciBPUFRJT05BTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBJZiBwcmVzZW50LCB2ZXJzaW9uIHNoYWxsIGJlIHYyIG9yIHYzCiAgICAgZXh0ZW5zaW9ucyAgICAgIFszXSAgRVhQTElDSVQgRXh0ZW5zaW9ucyBPUFRJT05BTAogICAgICAgICAgICAgICAgICAgICAgICAgIC0tIElmIHByZXNlbnQsIHZlcnNpb24gc2hhbGwgYmUgdjMgLS0KfQpWZXJzaW9uICA6Oj0gIElOVEVHRVJ+ICB7ICB2MSgwKSwgdjIoMSksIHYzKDIpICB9CkNlcnRpZmljYXRlU2VyaWFsTnVtYmVyICA6Oj0gIElOVEVHRVIKVW5pdmVyc2EgOjo9IFNFUVVFTkNFIA==